据我所知,不可能在merge语句中使用where。那我该怎么做多个条件?
我想要实现的目标,但无法发挥作用:
MERGE (n:Node)
WHERE n.key = "test1" OR n.key = "test2"
ON CREATE n.key = "test1"
return n
那么如何在我的合并声明中创建或条件?或者有更好的方法吗?
答案 0 :(得分:2)
看起来MERGE不支持WHERE子句。但是,您可以为每个属性指定一个测试值;例如:
MERGE (n:Node {key:'test1'})
RETURN n;
在您的情况下,由于您要为每个属性测试多个值,因此无法使用MERGE执行此操作
另外,如果我理解你要做的事情,那么看起来MERGE是不正确的。我认为以下Cypher代码应该为您提供您正在寻找的结果:
MATCH (n:Node { key: "test1" })
RETURN n
UNION
OPTIONAL MATCH (n:Node { key: 'test2' })
SET n.key = 'test1'
RETURN n;
答案 1 :(得分:0)
不确定如何处理已经有两个节点的情况,一个位于test1
,另一个位于图表中test2
。您必须合并两个节点,例如也将关系从test2移到test1。
一般来说,我会尝试这样的事情(就像cybersam建议的那样):
OPTIONAL MATCH (n:Node { key: 'test2' })
SET n.key = 'test1'
MERGE (m:Node { key: "test1" })
RETURN m