在Neo4j Cypher中获取第二跳,可选MATCH节点的计数

时间:2015-03-13 05:43:33

标签: neo4j graph-databases

我试过了:

 START u=node(25)
 MATCH u-[p:captains]-(b:Boat)
 OPTIONAL MATCH b-[r:sails]-(s:Sea)
 OPTIONAL MATCH b-[p1:rides]-(u1:Person) WHERE p1.prop = 'foo'
 OPTIONAL MATCH b-[p2:rides]-(u2:Person) WHERE p2.prop = 'bar'
 OPTIONAL MATCH b-[p3:rides]-(u3:Person) WHERE p3.prop = 'baz'
 RETURN b, count(s), count(u1), count(u2), count(u3)

但所有的计数都不正确。我期待以每个“b”开始的可选匹配开始的每一行的计数。有人帮吗?比如,3海,2名乘客是foo,5名是酒吧等等。

编辑:我觉得这更接近,但仍然错了......

 START u=node(25)
 MATCH u-[p:captains]-(b:Boat)
 WITH b
 OPTIONAL MATCH b-[r:sails]-(s:Sea)
 OPTIONAL MATCH b-[p1:rides{prop:'foo'}]-(u1:Person)
 OPTIONAL MATCH b-[p2:rides{prop:'bar'}]-(u2:Person)
 OPTIONAL MATCH b-[p3:rides{prop:'baz'}]-(u3:Person)
 RETURN c, count(s), count(u1), count(u2), count(u3)

似乎给了我一些类似于所有相关信息的计数......

1 个答案:

答案 0 :(得分:2)

答案是更换每个

count(

count(DISTINCT 

删除空值!