我有几个节点,我需要在特定标签的所有节点中添加一个增量值。
match wd= (w:MYNODE)
forEach(n IN nodes(wd)|
set n.incrementalId=??
);
目前,我已经尝试过在每个节点上遍历,但无法获取每个循环的索引 ps:我也尝试过但无法递增,即++当前值。
答案 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})