web-dev-qa-db-ja.com

Neo4JはIDでノードを取得します

私のプロジェクトの1つにneo4jを使用しています。nameとして単一のプロパティのみを持つノードがあります。IDを使用してそのノードを取得したいのですが、このコードを使用するとすでにIDがあります

MATCH (s:SKILLS{ID:65110}) return s

それは何も返しません、ここに私のノードがあります

enter image description here

クエリが間違っている場合は、番号を使用してどのようにクエリしますか

72
Niraj Chauhan
MATCH (s)
WHERE ID(s) = 65110
RETURN s

ID function は、ノードまたは関係のIDを取得します。これは、作成するidまたはIDと呼ばれるプロパティとは異なります。

117
Damon Horrell

警告:次の答えは間違っています! STARTはレガシーインデックスにアクセスする場合にのみ使用する必要がありますCypher 2.2以降では無効 です。

Neo4j WHERE ID(n) =を使用することをお勧めします 、さらに、それは 単一のルックアップのみを必要とします(一致するIDを見つけるためにすべてのノードをスキャンしない)

誰も同じ間違いをしないように、この答えを保持します。

あなたcanWHERE ID(s) = 65110を使用できますが、これはあなたのすべてのノードのIDをチェックしますデータベース。

これを行うには、より効率的な方法があります。

START s=NODE(517) MATCH(s) RETURN s
12
Code Bling

あなたは言うことができます:

(n:User) where id(n) >=20 RETURN n

これは、ノード参照IDが20を超えるユーザータイプのすべてのノードを返します

2
Wesam Na