19

Neo4JのCypherでは、2つのノードが与えられ、それらの間に関係がない場合は、重みプロパティが1の関係(タイプFoo)を作成したいと思います。この関係がすでに存在する場合は、その重みプロパティをインクリメントしたいと思います。

単一のCypherクエリでこれを行う良い方法はありますか?ありがとう!

編集:いくつかの追加の詳細:ノードはすでに作成されており、一意であり、インデックスに含まれています。

4

3 に答える 3

45

これがまさにCREATE UNIQUE1.8で追加した理由です。

START a=node(...), b=node(...)
CREATE UNIQUE a-[r:CONNECTED_TO]-b
SET r.weight = coalesce(r.weight?, 0) + 1

詳細はCREATE UNIQUE こちら、疑問符はこちら、合体はこちら

于 2012-07-06T04:51:05.020 に答える
11

Andres の回答を完成させるために、プロパティの末尾にある疑問符は Neo4j 2 でエラーになりました。したがって、リクエストは次のようになります。

MATCH a, b
WHERE a(...) AND b(...)
CREATE UNIQUE a-[r:CONNECTED_TO]->b
SET r.weight = coalesce(r.weight, 0) + 1
于 2014-05-01T03:08:15.617 に答える