プロジェクトの1つにneo4jを使用していますが、プロパティが1つしかないノードがありname
、IDを使用してそのノードを取得したいのですが、すでにIDがありますが、このコードを使用すると
MATCH (s:SKILLS{ID:65110}) return s
それは何も返しません、ここに私のノードがあります
クエリが間違っている場合は、番号を使用してクエリを実行するにはどうすればよいですか
プロジェクトの1つにneo4jを使用していますが、プロパティが1つしかないノードがありname
、IDを使用してそのノードを取得したいのですが、すでにIDがありますが、このコードを使用すると
MATCH (s:SKILLS{ID:65110}) return s
それは何も返しません、ここに私のノードがあります
クエリが間違っている場合は、番号を使用してクエリを実行するにはどうすればよいですか
回答:
MATCH (s)
WHERE ID(s) = 65110
RETURN s
このID
関数は、ノードまたは関係のIDを取得します。これは、呼び出された、id
またはID
作成したプロパティとは異なります。
CONSTRAINT
エンティティを追跡するための独自の一意のIDプロパティ(理想的にはを使用)を作成します
警告:次の答えは正しくありません!STARTは、レガシーインデックスにアクセスする場合にのみ使用する必要があります。Cypher2.2以降では無効になっています。
Neo4jは、の使用を推奨し
WHERE ID(n) =
、さらに1回のルックアップのみが必要であると述べています(一致するIDを見つけるためにすべてのノードをスキャンするわけではありません)誰かが同じ過ちを犯さないように、この答えを維持します。
あなたはできる使いWHERE ID(s) = 65110
ますが、これは、データベース内のすべてのノードのIDをチェックします。
これを行うためのより効率的な方法があります:
START s=NODE(517) MATCH(s) RETURN s
Result Details
コンソールでこれらの例を見てください:console.neo4j.org/r/dbz1we(AllNodesScanを実行)およびconsole.neo4j.org/r/9076wd(NodeByIdを実行)
+NodeByIdSeek
1つのノードにのみアクセスする必要がありますが、何らかの理由で+AllNodesScan
。を実行しています。