我的图表包含一组使用专用字段 fid 枚举的节点。我想定期更新这个枚举。
我目前的方法是重置枚举并执行多个语句来增加每个节点的fid。
1. (f:File) set f.fid = -1
for(int i = 0; i < count ; i++) {
2. (f:File) set f.fid = i where id(f) = nodeId
}
我想应该可以使用foreach子句使用单个cypher语句执行此任务。
MATCH p=(f:File)
FOREACH (n IN nodes(p)| SET f.fid = -1 )
我正在寻找类似于这句话的东西。
MATCH (f:File)
WITH COLLECT(f) AS fs
WITH fs, i = 0
FOREACH (f in fs, i=i+1| SET f.fid = i ) return f.fid, f.name
答案 0 :(得分:2)
基于以下控制台集:http://console.neo4j.org/r/447qni
以下查询似乎可以解决问题:
MATCH (f:File)
WITH collect(f) as f, count(f) AS c
UNWIND range(0,c-1) AS x
WITH f[x] AS file,x
SET file.iteration = x+1