我正在使用图形db(neo4j)和cypher。我对此查询的目标是首先匹配给定用户具有PINNED的每个Pin,然后计算每个引脚所具有的LIKES数量。目前我能够返回所有引脚之间的喜欢总数,但是当有多个引脚时,这些信息对我没有帮助。例如,如果我现在在我的数据库中运行此查询,并且有2个节点分别有2个喜欢和3个喜欢,我的查询将返回" 5"。所以我无法知道有多少喜欢属于每个引脚。如何编写此查询,以便获得每个引脚的LIKES数量?
MATCH (u:User {lastName:"Example"})-[:PINNED]->(z:Pin)
WITH collect(z) as cs
MATCH (:User)-[:LIKES]->(y:Pin)
WHERE (y) in cs
MATCH (a:User)-[r:LIKES]->(y)
RETURN COUNT(r), y
答案 0 :(得分:12)
看起来你在比赛中有点过分,我们可以简化这一点。
MATCH (u:User {lastName:"Example"})-[:PINNED]->(z:Pin)
RETURN z, SIZE( ()-[:LIKES]->(z) ) as likes