neo4j - 使用neo4j获得2个用户之间的共同 friend 以及用户和普通 friend 之间的所有共同 friend

标签 neo4j cypher

假设 a,b,c 和 b,d,e 和 c,f,g 和 a,e,g,h 是 friend 。所以

获取共同好友 b/w a&b:

MATCH (me:User {username:'a'}) -[r:FRIENDS]-(mutualfriends) 
       -[r:FRIENDS]- (u:User {username:'b'}) 
RETURn mutualfriends

现在如何从上面获取所有普通 friend 和用户'a'?
我们也可以在一个查询中完成所有这些吗?非常感谢任何帮助。

最佳答案

  1. 不要使用 r 两次,否则您将无法获得 mutual-friends 的正确结果。实际上你根本不需要r

你继续匹配就可以了。

MATCH (me:User {username:'a'})-[:FRIENDS]-(mf)-[:FRIENDS]-(u:User {username:'b'}) 
WITH distinct me, mf
MATCH (me)-[:FRIENDS]-(mmf)-[:FRIENDS]-(mf)
RETURN distinct mmf

关于neo4j - 使用neo4j获得2个用户之间的共同 friend 以及用户和普通 friend 之间的所有共同 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428239/

相关文章:

ubuntu - 即使启用了 0.0.0.0,neo4j 网络管理员也无法查看

c# - 为什么在 C# 中使用 Neo4j 时 'IDriver' 不包含 'Session' 的定义?

java - Cypher 查询给出 java.lang.OutOfMemoryError

Neo4j/密码 : sort results based on a sorted collection

node.js - 如何使用 Cypher 在 Neo4j 中只获取 friend 的 friend

c# - 将最短路径中的所有节点作为对象列表返回

neo4j - Cypher/Neo4J 中的集合是什么?

neo4j - 使用java在neo4j中同时更新多个相关节点

performance - Neo4j 查询需要很长时间

c# - 如何通过带有密码的 neo4jclient 返回关系及其属性