私は現在、各インデックスに 2 つのノードと関係 (Part_1 -> Part_2) が含まれている配列を反復処理しており、Neo4jTemplate.save() メソッドを使用してデータベースに永続化しています。ただし、一部のインデックスには、他のノードと関係を持つ繰り返しノードがあります (Part_2 -> Part_3)。私のバージョンでは現在、ノードが既に存在する場合にマージするのではなく、毎回新しいノードと関係を作成します。
この投稿を読みましたが、2 つの同じノードが同じ ID を持つように実装する方法がわかりません。私の現在のコードは次のように機能します:
- 2 つのノードを作成する
- 関係を築く
- ノードに関係を追加する
- Neo4jTemplate.save() を使用して永続化します
CREATE ではなく MERGE に変更する必要があるのは何ですか? 永続化する前にチェックを行う必要がありますか、または SDN 4 で永続化している間にチェックする方法はありますか?
編集:
Neo4jTemplate.query() メソッドを使用して Cyper クエリを作成することにしましたが、複数のノードをマージするためのパラメーターを正しく作成する方法がわかりません。1 つのノードに対して、次のように MERGE ステートメントを正しく作成できます。
Map<String, Object> params = new HashMap<String, Object>();
Map<String, Object> node = new HashMap<String, Object>();node.put("名前", "Part_1");
params.put("props", node_1);
String query = "MERGE( n1:Part {name:{props}.name} )";template.query(クエリ、パラメータ);
私の目標は、2 つのノードでマージを呼び出してから、マージを再度呼び出して、1 つのステートメントで関係を作成することです。私のコードは今次のようになります:
Map<String, Object> params = new HashMap<String, Object>();
List<Map<String, Object>> マップ;
Map<String, Object> node1 = new HashMap<String, Object>();
Map<String, Object> node2 = new HashMap<String, Object>();node1.put("name1", "Part_1");
node2.put("name2", "Part_2");
maps = Arrays.asList(node_1, node_2)params.put("props", maps);
文字列クエリ = "MERGE( n1:Part {name:{props}.name1} )
MERGE( n2:Part {name:{props}.name2 )
MERGE(n1)-[:CREATED]->(n2)";template.query(クエリ、パラメータ);
これまでに見た、パラメーターに複数のノードを含むすべての例は、呼び出されたときに単に全体を反復処理するだけです。参照している特定のノードを指定できるパラメーターを持つ例は見つかりませんでした。特定のノードを参照するパラメータを作成するにはどうすればよいですか? 前もって感謝します!