如何在一个cypher语句中为所选节点的属性设置枚举?

时间:2015-06-21 17:08:32

标签: neo4j cypher

我的图表包含一组使用专用字段 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

1 个答案:

答案 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