Neo4j 在可选条件和多个条件下合并
因此,据我所知,在merge语句中不可能使用where。那么我如何处理多个条件呢 我想要实现但无法实现的目标: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 (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