相同类型节点之间的neo4j密码计数关系

neo4j cypher count relations between same type of nodes

我对图形数据库太陌生了,我在从这样的模型中获取数据时遇到了问题。

我正在尝试计算 User1 和与 user1 同组的所有其他用户之间的共同点赞数。这是我试图为 User1:

获得的结果
User , Count, Drinks
User3,     2, [ Cola, Beer ]
User2,     1, [ Cola ]
User5,     1, [ Tea ]
User4,     0, [ ]
User6,     0, [ ]

这看起来很容易,但对我来说却不是。

我可以获取与用户有关系的用户和计数,但不能与没有关系的用户进行计数。请问有人可以帮我吗?提前致谢!

我提出的解决方案逻辑如下:

  • 找到用户1
  • 查找用户 1 以外的其他用户
  • 为用户 1、饮料和其他用户的当前迭代之间的路径找到 OPTIONAL MATCH

这是基于以下测试图:

http://console.neo4j.org/r/xc3cqt

查询:

MATCH (u:User { id:1 })
MATCH (o:User)
WHERE o <> u
OPTIONAL MATCH (u)-[r:LIKES]->(d)<-[:LIKES]-(o)
RETURN o.id, count(r) as c, collect(DISTINCT (d.name)) AS drink

您提供的图表的结果:

o.id    c           drink
2       1           [Cola]
5       1           [Tea]
4       0           []
3       2           [Beer, Cola]
6       0           []