在FOREACH声明中[例如范围内的日(dayX,dayY)]是否有一种简单的方法可以找出迭代的索引?
答案 0 :(得分:2)
是的,你可以。
以下是一个示例查询,它创建包含索引和日期的8个Day
节点:
WITH 5 AS day1, 12 AS day2
FOREACH (i IN RANGE(0, day2-day1) |
CREATE (:Day { index: i, day: day1+i }));
此查询打印出结果节点:
MATCH (d:Day)
RETURN d
ORDER BY d.index;
这是一个示例结果:
+--------------------------+
| d |
+--------------------------+
| Node[54]{day:5,index:0} |
| Node[55]{day:6,index:1} |
| Node[56]{day:7,index:2} |
| Node[57]{day:8,index:3} |
| Node[58]{day:9,index:4} |
| Node[59]{day:10,index:5} |
| Node[60]{day:11,index:6} |
| Node[61]{day:12,index:7} |
+--------------------------+
答案 1 :(得分:1)
FOREACH
在迭代期间不会产生索引。如果您想要索引,可以使用range
和UNWIND
的组合,如下所示:
WITH ["some", "array", "of", "things"] AS things
UNWIND range(0,size(things)-2) AS i
// Do something for each element in the array. In this case connect two Things
MERGE (t1:Thing {name:things[i]})-[:RELATED_TO]->(t2:Thing {name:things[i+1]})
此示例迭代计数器i
,您可以使用该计数器访问数组中索引为i
的项目。