Java 朋友的朋友的密码查询过滤掉那些已经是朋友的朋友

Java 朋友的朋友的密码查询过滤掉那些已经是朋友的朋友,java,neo4j,cypher,Java,Neo4j,Cypher,我有一个密码查询 match (p:Person{userid:8432})-[r:friends_with]->(p1:Person)-[r2:friends_with]->(p2:Person) return p, count(p1), p2 order by count(p1) desc limit 25 这将返回包含已经是p的朋友的人的结果(p2)。如何筛选出那些已经是节点p的朋友的p2节点?我在这个网站上尝试了一个类似问题的片段 ... where not (p)<

我有一个密码查询

match (p:Person{userid:8432})-[r:friends_with]->(p1:Person)-[r2:friends_with]->(p2:Person) return p, count(p1), p2 order by count(p1) desc limit 25
这将返回包含已经是p的朋友的人的结果(p2)。如何筛选出那些已经是节点p的朋友的p2节点?我在这个网站上尝试了一个类似问题的片段

... where not (p)<-[r:friends_with]->(p2) ...
。。。其中不包括(p)(p2)。。。
但这是行不通的。非常感谢您的帮助


谢谢。

事实证明,使用以下where子句成功了

where not (p)-->(p2)

这是因为原始查询中的
r
。它已经为第一个rel绑定,因此它不会与另一个rel的模式匹配。如果您有多个类型,您仍然应该放置关系类型。啊。。。我懂了。感谢您的进一步了解。