如何查询一个节点集的共同联系人?
发布于 7 年前 作者 sun361504834 6266 次浏览 来自 问答

match (m:User) -[r]- (n) where m.phonenumber in [‘110’,‘112’,‘119’] retun n 这个cypher查询出来的是[‘110’,‘112’,‘119’]三个节点所有的联系人并集。 我如何才能查询出他们3个共同的联系人(无重复)呢?

5 回复

举例: 和 110有关系的节点: 1000,2000,3000 和 112有关系的节点: 1000,4000,5000 和 120有关系的节点: 1000,6000,7000

110,112,120 都和1000有关系 我应该怎么写cypher来通过[‘110’,‘112’,‘119’] 找到 ‘1000’ ?

https://neo4j.com/docs/developer-manual/current/cypher/clauses/union/ match (m:User) -[r]- (n) where m.phonenumber=‘110’ retun n union match (m:User) -[r]- (n) where m.phonenumber=‘112’ return n union match (m:User) -[r]- (n) where m.phonenumber=‘119’ return n 比较复杂的做法,应该是可以的。为什么不是120是112

@muyikouzi 谢谢,我试一试, 哈哈112也是随手打的

@muyikouzi 朋友,你这个写的不对额,union是联合查询,查出来的是去重的并集,不是交集。 这样查询出来的结果是1000,2000,3000,4000,5000,6000,7000

match (m:User) -[r]- (n1) where m.phonenumber = 110 with n1 match (m:User) -[r]- (n2) where m.phonenumber = 112 and n1=n2 with n2 match (m:User) -[r]- (n3) where m.phonenumber = 119 and n2=n3 return n3 这个应该可以,随便想的,试一试吧,两次value hashjoin

回到顶部