Cypher语言实现循环问题
请教各位,使用Cypher语句能实现循环执行吗,要怎么实现呢?
3 回复
缺省情况下,Cypher会对位于前面的查询的结果的每项内容进行循环处理: // 搜索匹配的节点,然后对每个节点执行更新属性的操作 MATCH (n:Node{type:'type}) SET n.prop = today()
复杂的情况下: 1、知道循环次数的话: // 循环执行100次 WITH range(1,100) AS it UNWIND it AS i MATCH …
2、循环次数由一个路径集合中节点或者边集合的大小决定 // 根据路径中节点数进行循环,使用nodes(path)函数 // 如果是对边操作,可以用relationships(path)函数 MATCH path = (a) -[:LIKES]-> (b) WITH nodes(path) AS nodes UNWIND nodes AS node … …
3、多重循环
// 二重循环: 生成九九乘法表 WITH range(1,9) AS it1 WITH range(1,9) AS it2 UNWIND it1 AS i UNWIND it2 AS j RETURN i* j
4、使用APOC过程
在更新数据库时,如果有大量节点要更新、建议将更新切分成小的批次,控制每次更新的次数(例如每次1000个节点),那么可以使用apoc.periodic.iterate()和apoc.periodic.commit()过程。关于这2个过程的使用方法参见论坛精华区相关文章: