如果后续匹配失败,则WITH中的Neo4j值将消失
我遇到了这个问题,我有一个使用如果后续匹配失败,则WITH中的Neo4j值将消失,neo4j,cypher,Neo4j,Cypher,我遇到了这个问题,我有一个使用WITH MATCH (u1:user {username: "pewpewlasers"}), (u2:user {username: "pewpew2"}) MERGE (u1)-[y:KNOWS]->(u2) ON CREATE SET y.connected = 1 WITH y, has(y.connected) AS connected REMOVE y.connected RETURN connected 这很有效。当知道关系被创建时,已连接
WITH
MATCH (u1:user {username: "pewpewlasers"}), (u2:user {username: "pewpew2"})
MERGE (u1)-[y:KNOWS]->(u2)
ON CREATE SET y.connected = 1
WITH y, has(y.connected) AS connected
REMOVE y.connected
RETURN connected
这很有效。当知道
关系被创建时,已连接
为true
elsefalse
。所以这个密码返回true
或false
。现在我想扩展这个
MATCH (u1:user {username: "pewpewlasers"}), (u2:user {username: "pewpew2"})
MERGE (u1)-[y:KNOWS]->(u2)
ON CREATE SET y.connected = 1
WITH y, has(y.connected) AS connected
REMOVE y.connected
WITH y, connected
MATCH (x)-[zz:LIKES]->(y) <------------- this match
WITH zz, connected
RETURN zz, connected
可选匹配解决匹配问题时,它将失败,并出现merge giving
null
错误。有什么建议吗?我想这样做可能会奏效
MATCH (u1:user {username: "pewpewlasers"}), (u2:user {username: "pewpew2"})
MERGE (u1)-[y:KNOWS]->(u2)
ON CREATE SET y.connected = 1
WITH y, has(y.connected) AS connected
REMOVE y.connected
WITH y, connected
OPTIONAL MATCH (x)-[zz:LIKES]->(yy)
FOREACH(ignoreMe IN CASE WHEN yy IS null THEN [] ELSE [1] END |
MERGE x-[:LOVES]->(yy))
WITH zz, connected
RETURN zz, connected
可选匹配允许保留所有初始行,如果没有关系,则“zz”的值为空。您的解决方案是有意义的。然而,我错过了一个细节。如果您有时间,请查看编辑。谢谢。谢谢你的回答,但这给了我一个错误:类型不匹配:y已经定义了冲突的类型关系(预期节点)啊yeh,因为y是前面定义的。在这种情况下,我们可以称第二个为“yy”。如果现在答案是好的,请接受。
MATCH (u1:user {username: "pewpewlasers"}), (u2:user {username: "pewpew2"})
MERGE (u1)-[y:KNOWS]->(u2)
ON CREATE SET y.connected = 1
WITH y, has(y.connected) AS connected
REMOVE y.connected
WITH y, connected
OPTIONAL MATCH (x)-[zz:LIKES]->(yy)
FOREACH(ignoreMe IN CASE WHEN yy IS null THEN [] ELSE [1] END |
MERGE x-[:LOVES]->(yy))
WITH zz, connected
RETURN zz, connected