2016-04-08 25 views
2

私はneo4j-jdbc 2.3.2をjava用のneo4jクライアントとして使用しています。次のサイファークエリを実行したとき
match(p:Person) where p.id_number='761201948V' return p.id;
ノードIDとしてP2547228が返されます。私はidがノードの他のプロパティと同じであると感じます。なぜなら、where節の中で使うことができるからです。

しかし、ここで私はこのクエリの内部で使用できる整数を期待していますSTART p=node('node.id') return p;このIDはneo4j dbの内部的なものですか?このIDを取得する方法はありますか?最も効率的であるものを、次の2つのサイファーから

?(両方が同じノードを参照する場合)
neo4j cypherの正確なノードIDを取得する

  1. START p=node('2547223') return p;
  2. match(p:Person) where p.id='P2547228' return p;

答えて

2

あなたはこのためにID(x)機能を使用する必要があります。注意すべきは、ID(x)x.idはまったく別のものです。前者は、Neo4j自身が管理する内部ノード/関係IDを返します。後者は、idプロパティを提供します。このプロパティは、データベース自体ではなくユーザーによって管理されます。

また、ノード/関係IDは常に数値です。 STARTを使用して

はかなり古い学校で、(手動インデックスへのアクセスを除く)、それ以上を使用すべきではありません。

start p=node(2547228) return p 

この1つは同等のステートメントです。ただ、

match(p:Person) where p.id=2547228 return p; 

match(p:Person) where id(p)=2547228 return p; 

財産をお探しノードラベルのスキャンまたはスキーマの索引参照のいずれかが必要です。単純なノード店にシーク動作を行う必要があるため、非常に効率的ですステートメントの先頭にPROFILEという接頭辞を付けて、独自のクエリプランを確認してください。

+0

まさに私が欲しいものです。 – Hasitha

関連する問題