サイプルクエリで入力マップからノードを更新したいが、ノードにまだ存在しないプロパティを設定したい(=
はすべてのノードのプロパティをオーバーライドする) +=
はマップに表示されるすべてのプロパティをオーバーライドします)。例えば存在しないプロパティのみを設定する
Iノード(n {key: "abc", prop1: "value"})
を有し、私は更新する地図がある場合:
WITH {key: "abc", prop1: "othervalue", prop2: "newvalue"}) AS update_map
を私はkey
によってマッチする操作を好きで、prop2
を更新し、prop1
を上書きせず、その結果になります(n {key: "abc", prop1: "value", prop2: "newvalue"})
となります。
私の現在のアプローチは、キーごとのキーに行きました:
UNWIND KEYS(update_map) AS update_map_key
MATCH (n {key: update_map.key})
WHERE n[update_map_key] IS NULL
SET n[update_map_key] = update_map[update_map_key]
はこれが(多分検索用-ノードあたりのキーを除く)偉大に見えますが、残念ながら動作しませんので、 []
構文を使用して変数名のプロパティを取得することはできますが、それを更新することはできません。
アイデア? Neo4j 2.3.7を実行することは重要です。
Neo4j 3(ユーザー定義の手順が必要)のように思われます。 Neo4j 2.3のソリューションをお持ちですか? – PaF
残念ながら、いいえ。これは3.xの機能です。 – Vardan