Cypher语言实现循环问题
发布于 5 年前 作者 zfzdk 2570 次浏览 来自 问答

请教各位,使用Cypher语句能实现循环执行吗,要怎么实现呢?

3 回复

apoc.periodic.commit() apoc.periodic.iterate()

@dalianmao 能详细说下怎么实现吗,刚接触neo4j不怎么会用,麻烦了

缺省情况下,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个过程的使用方法参见论坛精华区相关文章:

回到顶部