【问题标题】:Neo4j values from WITH disappears if subsequent MATCH fails如果后续 MATCH 失败,来自 WITH 的 Neo4j 值会消失
【发布时间】:2014-11-23 10:28:23
【问题描述】:

我遇到了这个问题,我有一个使用 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

这行得通。当KNOWS 关系创建时,connectedtrue 否则false。因此,此密码返回 truefalse。现在我想扩展这个

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

NOW connected 仅在标记匹配成功时返回 truefalse。否则它会给出一个空的结果。无论MATCH 是否成功,我都希望connected 返回truefalse

编辑:

抱歉,我在第二个查询中遗漏了一些内容。

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
MERGE x-[:LOVES]->(y)        <------------- EDIT
WITH zz, connected
RETURN zz, connected

解决匹配问题时的可选匹配,它将失败并合并给出null 错误。有什么建议吗?

【问题讨论】:

  • 如果现在好,请接受答案。

标签: neo4j cypher


【解决方案1】:

我认为这样的事情可能会奏效。

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

OPTIONAL MATCH 允许您保留所有初始行,然后如果没有关系,您将获得 'zz' 的空值。

【讨论】:

  • 您的解决方案很有意义。然而,我错过了一个细节。如果您有时间,请查看编辑。谢谢。
  • 感谢您的回答,但这给了我这个错误错误:类型不匹配:y 已经定义了冲突类型关系(预期节点)
  • 啊,是的,因为 y 是之前定义的。在这种情况下,我们可以将第二个称为“yy”。
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2019-08-29
相关资源
最近更新 更多