2017-02-06 8 views
0

サイプルクエリで入力マップからノードを更新したいが、ノードにまだ存在しないプロパティを設定したい(=はすべてのノードのプロパティをオーバーライドする) +=はマップに表示されるすべてのプロパティをオーバーライドします)。例えば存在しないプロパティのみを設定する

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を実行することは重要です。

答えて

1

apoc.create.setProperty([node、id、ids、nodes]、key、value) - ノードのプロパティを設定します。追加されたバージョン。参照: Neo4j: Dynamically add property/Set dynamic property

+0

Neo4j 3(ユーザー定義の手順が必要)のように思われます。 Neo4j 2.3のソリューションをお持ちですか? – PaF

+0

残念ながら、いいえ。これは3.xの機能です。 – Vardan

関連する問題