Neo4j GraphDBブートキャンプ完全版: Count()とIN (セクション23-24/49)
Neo4jのCount()関数とIN句は、効率的にノード、リレーションシップ、プロパティをカウントし、値のリストでフィルタリングするのに役立つ。
Count()はnullを含む/含まない値や行の数を返し、sum()は数値を合計する。IN句は、リスト内の値の存在をチェックする。
これらのツールを組み合わせることで、Neo4jのグラフデータから貴重な洞察を引き出すことができる。
この記事では、Neo4jクエリの2つの重要な概念 - Count()関数とIN句 - を掘り下げます。これらのツールを使用すると、ノード、リレーションシップ、プロパティを効率的にカウントし、値のリストに基づいて結果をフィルタリングできます。Neo4jブートキャンプからの重要ポイントを分解してみましょう。
Count():
Count()関数は、使用方法に応じて、値の数または行の数を返します。主に2つの変形があります:
count(*) - nullを含むすべての値をカウントする
count(expression) - 指定された式のnull以外の値をカウントする
一般的な使用例:
特定のラベルを持つノードをカウントする:match(n:Person) return count(*)
プロパティのnull以外の値とnull値をカウントする:match(n:Person) where n.born is not null return count(*)
一意の値をカウントする:match(n:Person) return count(distinct n.born)
直接接続されたノードをカウントする:match(n:Person{name:"Tom Hanks"})-->(x) return count(*)
リレーションシップタイプをカウントする:match(n{name:"Tom Hanks"})-[r]->(x) return type(r), count(*)
count()とsum()の違いを理解することが重要です。Count()は行/値の数を返しますが、sum()は数値を合計します。
IN句:
IN句を使用すると、値がリスト内に存在するかどうかを確認できます。リストは角括弧[]で示されます。例えば:
return 4 in [5,4] // trueを返す
return null in [5,4,null] // nullを返す
return null in [] // falseを返す
IN句はしばしば、プロパティ値に基づいてノードをフィルタリングするために使用されます:
match (a)-[r]->(b)
where a.name in ["Llaurence Fishburne", "Lilly Wachowski", "Lana Wachowski"]
return a.name, type(r), b.title
これは、提供されたリストの値のいずれかと一致する"name"プロパティを持つすべてのノードを、接続されたノードとリレーションシップタイプとともに返します。
IN句は、静的なリスト[...]または変数/リストに解決されるプロパティのいずれかを期待します。単一の非リスト値を提供することはできません。
要約すると、Count()とINは、Neo4jでグラフデータを分析するための強力なツールです。Count()を使用すると、さまざまな方法でノード、リレーションシップ、プロパティ値を集計できます。IN句を使用すると、値のリストに基づいてフィルタリングできます。これらを一緒に使用すると、接続されたデータから貴重な洞察を引き出すことができます。