如何在neo4j的节点中设置增量值

时间:2018-08-29 09:44:50

标签: neo4j

我有几个节点,我需要在特定标签的所有节点中添加一个增量值。

match wd= (w:MYNODE)
 forEach(n IN nodes(wd)|
  set n.incrementalId=??
);

目前,我已经尝试过在每个节点上遍历,但无法获取每个循环的索引 ps:我也尝试过但无法递增,即++当前值。

2 个答案:

答案 0 :(得分:1)

这是@InverseFalcon的第一个查询的简洁版本(类似于您问题中的查询形式):

MATCH (w:MYNODE)
WITH COLLECT(w) as ws
FOREACH(i IN RANGE(0, SIZE(ws)-1) | SET (ws[i]).incrementalId = i);

答案 1 :(得分:0)

如果节点已经存在,则必须使用更尴尬的方法来使用集合和索引:

MATCH (w:MYNODE)
WITH collect(w) as myNodes
UNWIND range(0, size(myNodes)-1) as index
WITH index, myNodes[index] as node
SET node.incrementalId = index

如果节点尚不存在,并且您希望使用增量ID创建一些节点,那么使用range()函数生成索引列表将是一项更轻松的任务:

UNWIND range(1, 100) as id
CREATE (:MYNODE {id:id})