pycharm中怎样执行.sh文件_怎样在Cypher中循环执行操作?

d74e2156e0900445cf7bb3ad003e76bf.png

Neo4j 发明了Cypher,一种面向图模式匹配的、声明型查询语言。Cypher拥有丰富的特性。这里我们举例说明怎样在Cypher中实现循环执行。

简单情况下,Cypher会对查询的结果中的每项内容进行循环处理。例如:

// 搜索匹配的节点,然后对每个节点执行更新属性的操作
MATCH (n:Node{type:'type'}) 
SET n.date= today()

如果知道循环次数的话,可以用range()函数创建一个包含循环变量的数组,然后用UNWIND命令展开数组:

// 循环执行100次 
WITH range(1,100) AS it 
UNWIND it AS i 
MATCH …

如果需要根据一个路径集合中节点或者边集合执行循环:

// 根据路径中节点数进行循环,使用nodes(path)函数 
// 如果是对边操作,可以用relationships(path)函数 
MATCH path = (a) -[:LIKES]-> (b) 
WITH nodes(path) AS nodes 
UNWIND nodes AS node 
… …

多重循环的例子:

// 二重循环: 生成九九乘法表 
WITH range(1,9) AS it1 
WITH range(1,9) AS it2 
UNWIND it1 AS i 
UNWIND it2 AS j 
RETURN i* j

在更新数据库时,如果有大量节点要更新、建议将更新切分成小的批次,控制每次更新的次数(例如每次1000个节点),那么可以使用APOC扩展包中的apoc.periodic.iterate()和apoc.periodic.commit()过程。关于这2个过程的使用方法参见相关文章:

  • Neo4j图数据库:怎样安装Neo4j APOC扩展包?
  • Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.2) - 循环执行 commit
  • Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.3) - 循环执行 iterate
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值