Neo4j相对较新。我意识到我原来发布的这个模式太模糊了。以下是希望更好的解释。Neo4j的Cypher查询语言 - 减少匹配节点
//Subgraph 1
Create (p1:Person {name: 'Person1'})
Create (p2:Person {name: 'Person2'})
Create (a1:Address {street: 'Suspicious'})
Create (p1)-[:Resides]->(a1)
Create (p2)-[:Resides]->(a1)
//Subgraph 2
Create (p3:Person {name: 'Person3'})
Create (p4:Person {name: 'Person4'})
Create (a2:Address {street: 'Double'})
Create (p3)-[:Resides]->(a2)
Create (p4)-[:Resides]->(a2)
Create (p3)-[:Knows]->(p4)
//Subgraph 3
Create (p5:Person {name: 'Person5'})
Create (a3:Address {street: 'Single'})
Create (p5)-[:Resides]->(a3)
我想写什么是检测下面的查询: - 有居住那里,不知道对方2人以上的所有地址(和人)。
这意味着只应找到Subgraph1。
Subgraph2不会被找到,因为有2个人居住在那里,但他们彼此认识。
子图3将不会被找到,因为只有1人居住在那里。
再次感谢您的帮助。
你真的应该使用标签。由于您在这里没有标签,因此我们可以提供的任何查询解决方案(不对标签进行假设)将不得不检查所有可能节点上的模式,这是无效的。例如,使用:Home节点将确保查询将从:Home节点开始使用标签索引,并将减少执行时间。 – InverseFalcon
我改变了示例 – Hutch