MERGE
とFOREACH
節を利用して、Cypherで1つのバルク操作で2つのノード間に明確なリレーションシップを作成/更新しようとしています。Cypherを使用したNeo4Jでのリレーションのバルクマージ
今、私は次のようにそれを行うにしようとしていますが、それは文法的に正しくありません:
MERGE (u1:Person {id:1})
MERGE (u2:Person {id:3})
FOREACH (score IN [{name:'R1',val:1.0},{name:'R2',val:0.5}]|
MERGE (u1)-[r]-(u2)
WHERE type(r) = score.name
ON CREATE SET r.weight=score.val,r.created=timestamp(),r.updated=r.created
ON MATCH SET r.weight=score.val,r.updated=timestamp()
)
あなたはそれを達成するために私にクエリを提案してください可能性があります。
MERGE (u1)-[r]-(u2)
WHERE type(r) = score.name
が許可されていないタイプずに関係をCreting、またそれは関係のタイプに変数名(score.name)を使用することです: