【问题标题】:OPTIONAL MATCH in Cypher not returning valuesCypher 中的 OPTIONAL MATCH 不返回值
【发布时间】:2022-01-05 15:43:03
【问题描述】:

我正在尝试获取节点“A”,以便它与任何“B”没有连接,或者 B 没有与“C”连接。

这是我现在的查询:

MATCH (a:A)
OPTIONAL MATCH (a) -- (b:B), (b) -- (c:C)
WITH *
WHERE (
    b IS NULL
    OR
    c IS NULL
)

RETURN *

“a”结果是正确的。问题是,“b”始终为空(“c”也是如此,但这是意料之中的)。

我没有在 where 中使用关系谓词,因为我需要这些节点。这是一个简单的例子,但我链接了更多的关系级别和更多的过滤器(AND & OR)

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您的问题是您需要将OPTIONAL MATCH 分成两个匹配项。

    MATCH (a:A)
    OPTIONAL MATCH (a) -- (b:B)
    OPTIONAL MATCH (b) -- (c:C)
    WITH *
    WHERE (
        b IS NULL
        OR
        c IS NULL
    )
    
    RETURN *
    

    当你在做一个OPTIONAL MATCH时,你正在搜索一个完整的模式,如果它不存在,那么它不会被返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多