Cypher 中的可选匹配不返回值
OPTIONAL MATCH in Cypher not returning values
我正在尝试获取节点“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)
您的问题是您需要将 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
时,搜索的是完整的模式,如果不存在,则不返回。
我正在尝试获取节点“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)
您的问题是您需要将 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
时,搜索的是完整的模式,如果不存在,则不返回。