Neo4j 在可选条件和多个条件下合并

Neo4j 在可选条件和多个条件下合并,neo4j,cypher,Neo4j,Cypher,因此,据我所知,在merge语句中不可能使用where。那么我如何处理多个条件呢 我想要实现但无法实现的目标: MERGE (n:Node) WHERE n.key = "test1" OR n.key = "test2" ON CREATE n.key = "test1" return n 那么,如何在merge语句中创建or条件呢?或者有更好的方法吗?看起来MERGE不支持WHERE子句。但是,可以为每个属性指定一个测试值;例如: MERGE (n:Node {key:'test1'})

因此,据我所知,在merge语句中不可能使用where。那么我如何处理多个条件呢

我想要实现但无法实现的目标:

MERGE (n:Node) 
WHERE n.key = "test1" OR n.key = "test2"
ON CREATE n.key = "test1"
return n

那么,如何在merge语句中创建or条件呢?或者有更好的方法吗?

看起来MERGE不支持WHERE子句。但是,可以为每个属性指定一个测试值;例如:

MERGE (n:Node {key:'test1'})
RETURN n;
在您的情况下,因为您希望测试每个属性的多个值,所以使用MERGE无法做到这一点

另外,如果我理解您正在尝试做的事情,那么不管怎么说,合并看起来都不是正确的选择。我认为下面的密码应该会给出您想要的结果:

MATCH (n:Node { key: "test1" })
RETURN n
UNION
OPTIONAL MATCH (n:Node { key: 'test2' })
SET n.key = 'test1'
RETURN n;

不确定如何处理图形中已经有两个节点的情况,一个是
test1
,另一个是
test2
。您必须合并这两个节点,例如,还要将关系从test2移动到test1

一般来说,我会尝试这样的方式(就像赛博山姆建议的那样):

OPTIONAL MATCH (n:Node { key: 'test2' })
SET n.key = 'test1'
MERGE (m:Node { key: "test1" })
RETURN m