bir relevant example on the merge page of the documentation var:
MERGE (keanu:Person { name:'Keanu Reeves' })
ON CREATE SET keanu.created = timestamp()
ON MATCH SET keanu.lastSeen = timestamp()
RETURN keanu.name, has(keanu.lastSeen);
Temelde bu varlığı veya "lastSeen" özelliğinin yokluğunda 0 veya 1 bayrak saklar.
Sorunuz, "Charlie Sheen" ile eşleşen ancak daha sonra eşleştirdiğiniz değeri (name
) "Charlie" olmak üzere değiştirdiğiniz bu tuhaflığa sahiptir. Bu garip - her seferinde bir değişiklik yaptığınız için, ON MATCH
maddesini ekleseniz bile, asla ateşlemeyeceğiniz anlamına gelir. Her seferinde yeni oluşturursunuz, ardından değiştirirsiniz, bu sorguyu bir sonraki çalıştırmada yeni oluşturulacağını garanti edersiniz. Özel bir durum olmadığı sürece, sorgunuzun şartlarını daha sonra sorguda değiştirmek kötü bir fikir olabilir.
Bu sorunun yanıtını kontrol edin. http://stackoverflow.com/questions/20274979/is-it-possible-to-determine-if-a-cypher-merge-results-in-a-create-or-a-match – JohnMark13