0

私は neo4j の初心者で、MERGE 句に問題があります。次のようなクエリを実行する方法があります。

def upsert (idValue, valueField1):
   query = "MERGE (n:Node {id: '" + idValue+ "'}) "
   query += "ON MATCH SET n.field1= n.field1+ " + str(valueField1) + " "
   query += "ON CREATE SET n = {id: '" + idValue + "', field1: 0} "
   return db.run(query)

次に、次のようにメソッドを呼び出しています。

upsert("1", 0)
upsert("2", 0)
upsert("3", 5)
upsert("1", 2)
upsert("1", 1)

それで、その後、私はこれを期待しました:

node (id="1", field1=3)
node (id="2", field1=0)
node (id="3", field1=0)

しかし、私はこれを得ています:

node (id="1", field1=2)
node (id="2", field1=0)
node (id="3", field1=0)

さらに、同じ呼び出しをもう一度行うと、次のようになりました。

node (id="1", field1=4)
node (id="2", field1=0)
node (id="3", field1=5)

何が起こっているのか、何が間違っているのか誰か説明してもらえますか? インターネットで探しましたが、参考になるものが見つかりませんでした。

4

1 に答える 1