将路径中的节点数添加到每个结果中

时间:2014-02-21 16:28:22

标签: neo4j cypher

我有以下密码查询:

MATCH (t:thing{id:'c4474c0c3bb2f46d21156c456a1b9403'})-[:`REWARDED`]->(r)
OPTIONAL MATCH (u)-[:`SUPPORTS`]->(e)
RETURN t,r,u

这看起来与我不想得到的一样(http://note.io/Mgxabp),但我只需要奖励节点(r)和每个奖励的用户数(u)。

我尝试了很多查询,但大多数情况下我获得了2个奖励节点,两个用户都计算在内。

更新: 我在Neo4J控制台中添加了一个示例:http://console.neo4j.org/?id=ojfa0i

2 个答案:

答案 0 :(得分:0)

要获得每个奖励的人数/支持者数量,您可以使用:

MATCH (t)-[:REWARD | BACKED]->(r) 
RETURN r, count(t)

如果您只想知道有多少人获得了奖励,那么您可以使用:

MATCH (t)-[:REWARD | BACKED]->(r) 
WHERE t.entity="person"
RETURN DISTINCT r, count(t)

您可以使用WHERE t.id="..."

进一步指定所需的人

我在neo4j console中重新创建了您的图表,您可以在这里尝试我在这里的查询。

答案 1 :(得分:0)

参考您的图表here

尝试此查询:

MATCH (t { entity: "thing" })-[:HAS_REWARD]->(r) 
OPTIONAL MATCH r<-[BACKED]-(u)-[:SUPPORTS]->(t) 
RETURN r AS reward,count(u) AS users,collect(u) AS usernodes