2016-12-26 3 views
0

私はneo4jを使い始めたばかりで、thisのチュートリアルに従っています。私は以下のクエリを実行しようとしていますが、個々の行を個別に実行したり、3行を一緒に実行したりすると、結果が違ってきます。neo4jで別の結果を得るには行ごとにクエリを実行する

CREATE (sally:Person { name: 'Sally', age: 32 }) 

CREATE (john:Person { name: 'John', age: 27 }) 

CREATE (sally)-[:FRIEND_OF { since: 1357718400 }]->(john) 

enter image description here

誰かが私にこの問題を引き起こしている可能性が何の表示をしてください与えてもらえますか?

答えて

2

クエリを個別に実行すると、クエリの間に変数名(sallyjohn)は実行されません。

CREATE (node1)-[:FRIEND_OF { since: 1357718400 }]->(node2) 

、あるいはすべての変数名省略:

をあなたの第三クエリが変数を使用せずに解釈されることを意味 sally、何にバインド johnどちら:あなたが書いたのであれば

CREATE (sally)-[:FRIEND_OF { since: 1357718400 }]->(john) 

、あなたは同じことを達成します

CREATE()-[:FRIEND_OF { since: 1357718400 }]->() 

あなたは、この複数の方法を修正することができます。

1:1つのクエリを使用して、その行が個別に実行されていないことを確認します。

CREATE 
    (sally:Person { name: 'Sally', age: 32 }), 
    (john:Person { name: 'John', age: 27 }), 
    (sally)-[:FRIEND_OF { since: 1357718400 }]->(john) 

2:以前に挿入されたノードを見つけるためにMATCHを使用してください。もちろん、後者のアプローチでは、名前は一意の識別子であると仮定しているが、これは一般的には真ではない。この問題を回避するには、次のことができます。

  • リターン(などの社会保障番号、)ID()機能とデータベースの外部からMATCH (sally), (john) WHERE ID(sally) = ..., ID(john) = ...または

  • 使用いくつかの他の識別子を使用してを使用してノード識別子。

関連する問題