見出し画像

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句を使用すると、値のリストに基づいてフィルタリングできます。これらを一緒に使用すると、接続されたデータから貴重な洞察を引き出すことができます。

「超本当にドラゴン」へ

いいなと思ったら応援しよう!