Cypher中的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";总是为null("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时,您正在搜索一个完整的模式,如果它不存在,则不会返回。

最新更新