在cypher中如何进行如下查询:
“返回所有安娜追随的人,而不追随任何人”?

在下面的代码中(在查询后我清楚了起始节点的ID的情况下),“r为null”部分似乎不起作用:

START o=node({id})
MATCH (a)-[:follows]->(b)-[r]->(c)
WHERE a.name="anna" and r is null
RETURN b

现在,“跟随”是我唯一的关系。
但是也
START o=node({id})
MATCH (a)-[:follows]->(b)-[:follows]->(c)
WHERE a.name="anna" and c is null
RETURN b* does not work.

By无效,我的意思是:尽管应该有一些结果,但我没有任何结果。

最佳答案

如果该模式不存在,则不会match一个模式。 match用于查找事物,而不是用于未找到事物。您可以将这样的谓词放入where子句中:

START a=node({id})
MATCH (a)-[:follows]->(b)
WHERE not(b-[:follows]->())
RETURN b

10-02 08:45