如何计算Neo4J中某个节点下游的所有节点/边缘

时间:2012-11-29 00:18:35

标签: neo4j cypher

我想知道,在Cypher内是否有办法获取某个节点x下游所有节点的计数。

对于我的特定用例,我有许多图形,它们是单独的实体,但存储在同一个实例中。我想为每个图表找出节点和关系计数是什么。

我已经有了这个关系     start r = rel()返回计数(

这对于节点而言     start n = node()return count(

用于数据库中的所有内容。

非常感谢,

埃蒙

2 个答案:

答案 0 :(得分:2)

如果每个子图有一些“引用”或根节点,则可以使用路径表达式查找所有节点:

start root=node:roots(id="xx")
match root-[*..5]->end
return count(distinct end)

限制搜索深度是有意义的。

答案 1 :(得分:1)

您必须为您的nodes / rels中的所有属性编制索引。然后,您必须从这些索引开始计算,如果必要,请为每个图表将它们相加。 让我们假设我们有2个图表,书籍作者类型和汽车颜色类型。然后在cypher中获取每个图的总节点数:

start g1=node:node_auto_index('bookName:*'), g11=node:node_auto_index('authorName:*'),
      g2=node:node_auto_index('carName:*'), g22=node:node_auto_index('carColor:*')
return count(g1)+count(g11) as graph1, count(g2)+count(g22) as graph2

所有关系都相似。我不知道任何可以简单地按未定义属性分组的密码解决方案 - 这可以轻松解决问题。