在树形图中计算父节点的每个节点数

时间:2014-09-19 12:58:23

标签: neo4j cypher

我是Cypher的新手。

我有一个在NEO4J中构建的分层树,我需要在每个节点上设置一个“深度”属性,该属性将包含其父节点数。是否有一个可以设置/更新这些属性的cypher查询?

     a
    / \
   b   c
  / \
 d   e

所以在这棵树中,a.depth = 0,b.depth = 1,c.depth = 1,d.depth = 2,e.depth = 2,依此类推......

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以为路径指定变量并使用其长度:

 MATCH p=(a:MyLabel {key:''value'})-[*..20]->(x)
 SET x.depth = length(p)

答案 1 :(得分:0)

Stefan的回答很有效,但这是我找到的另一种方式:

MATCH (a:MyLabel)<-[r:*..20]-(parent:MyLabel)
WITH a, count(r) AS parents
SET a.depth = parents

我的数据速度不快,几百个节点上的性能相同。