使用Cypher Query计算Neo4J中多个根节点的分支节点

时间:2014-04-10 21:06:17

标签: neo4j cypher

enter image description here

如图所示,
3根节点 - A,B,C - 同样是D,E,F等 6分支节点 - A1,a2,a3,b1,b2,c1
 我想得到与根节点相关的分支节点的数量。

所以我用了

MATCH (b:branch)-[:branch_of]-(r:root {Root:'A'}) RETURN count(b) 

适用于单根, 但我想要多根 - 所以我用了

MATCH (r:root),(b:branch),(b)-[:branch_of]-(r {Root:'A'},{Root:'B'},{Root:'C'}) RETURN count(b) 

但它不起作用 - 如何实施?

2 个答案:

答案 0 :(得分:1)

我认为这更接近你想要的。对于每个根(在'roots'参数数组中具有'根'属性值),获取分支数的计数。

顺便说一下,您应该指出查询中关系的方向性。这可以使事情变得更快。

MATCH (b:branch)-[:branch_of]-(r:root)
WHERE r.Root IN {roots}
RETURN r, count(b)

所以,如果你只关心根“A”和“B”,你可以指定一个这样的参数:

{
  "roots": ['A', 'B']
}

答案 1 :(得分:0)

自己回答

MATCH (r:root),(b:branch),(b)-[:branch_of]-(r) WHERE r.name="A" OR r.name="B" RETURN count(b)

有效