当前位置: 首页 > news >正文

Neo4j之FOREACH基础

在 Neo4j 中,FOREACH 语句用于在查询中对一组元素执行某些操作,通常是在创建或更新节点关系时。它常常与 CREATESET 等操作结合使用。

创建多个关系:

MATCH (p:Person), (m:Movie)
WHERE p.name = 'Alice' AND m.title = 'The Matrix'
FOREACH (ignoredVar IN CASE WHEN NOT EXISTS((p)-[:ACTED_IN]->(m)) THEN [1] ELSE [] END |CREATE (p)-[:ACTED_IN]->(m));

这个查询会找到名为 "Alice" 的节点和名为 "The Matrix" 的电影,并且只在尚不存在 "ACTED_IN" 关系的情况下创建关系。

批量更新节点属性:

MATCH (p:Person)
WHERE p.age < 30
FOREACH (person IN [p] | SET person.isYoung = true);

这个查询会找到年龄小于 30 的所有节点,并为每个节点设置 "isYoung" 属性为 true。

根据列表创建关系:

MATCH (p:Person), (m:Movie)
WHERE p.name = 'Bob' AND m.title = 'The Matrix'
FOREACH (rating IN [4, 5, 3] |CREATE (p)-[:RATED {rating: rating}]->(m));

这个查询的目的是在已经存在的节点 "Bob" 和 "The Matrix" 之间创建多个 "RATED" 关系,每个关系都有一个不同的评分属性。以下是查询的解释:

  1. MATCH (p:Person), (m:Movie):这一部分使用 MATCH 语句找到满足条件的 "Person" 节点和 "Movie" 节点。其中,(p:Person) 表示一个 "Person" 节点,(m:Movie) 表示一个 "Movie" 节点。

  2. WHERE p.name = 'Bob' AND m.title = 'The Matrix':这一部分使用 WHERE 语句过滤出 "Person" 节点的名字为 "Bob",且 "Movie" 节点的标题为 "The Matrix"。

  3. FOREACH (rating IN [4, 5, 3] | CREATE (p)-[:RATED {rating: rating}]->(m)):这一部分使用 FOREACH 语句对之前匹配的节点执行批处理操作。对于每个评分值 rating(在列表 [4, 5, 3] 中迭代),都会执行一次下面的操作:

    • CREATE (p)-[:RATED {rating: rating}]->(m):在 "Bob" 节点和 "The Matrix" 节点之间创建一个 "RATED" 关系,关系上带有一个 "rating" 属性,该属性的值是当前迭代的评分值。

综合起来,这个查询会创建多个 "RATED" 关系,每个关系都表示 "Bob" 对 "The Matrix" 的不同评分。例如,会创建三个关系,分别表示评分为 4、5 和 3。

条件更新属性:

MATCH (p:Person)
WHERE p.name = 'Charlie'
FOREACH (person IN [p] |SET person.age = CASE WHEN person.age < 25 THEN person.age + 2 ELSE person.age END);

这个查询会找到名为 "Charlie" 的节点,如果年龄小于 25,则增加 2 岁。

FOREACH 语句用于在一个节点或关系的集合上执行一组操作。它允许在查询中进行迭代和批处理操作,从而对多个元素进行动态的创建、更新或删除。

http://www.lryc.cn/news/127512.html

相关文章:

  • 【SpringBoot】| 接口架构风格—RESTful
  • CentOS系统环境搭建(十)——CentOS7定时任务
  • 如何在安卓设备上安装并使用 ONLYOFFICE 文档
  • 【制作npm包1】申请npm账号、认识个人包和组织包
  • linux学习(文件描述符)[11]
  • 影响力再度提升,Smartbi多次蝉联Gartner、IDC等权威认可
  • 【动态map】牛客挑战赛67 B
  • mysql(2)
  • 介绍 Apache Spark 的基本概念和在大数据分析中的应用
  • Vue CLI创建Vue项目详细步骤
  • 机器学习算法之-逻辑回归(2)
  • 【业务功能篇65】maven加速 配置settings.xml文件 镜像
  • 题目:售货员的难题(状压dp)
  • Linux 的 MySQL 5.x - 关于 Windows 10 的 Navicat Premium 导入 Excel (.xlsx)文件,报错问题集锦
  • 基于IP网络的存储协议——iSCSI
  • 神经网络基础-神经网络补充概念-27-深层网络中的前向传播
  • 用cpolar生成的公网地址,对位于本地的Cloudreve网盘进行访问
  • docker compose部署zookeeper
  • 【SA8295P 源码分析】77 - QNX Camera 之 ais_server 服务 源码分析
  • 内网搭建电影网站的实现和进行公网访问
  • 5.4 常用滤波算法
  • 【算法系列篇】双指针
  • Web和云开发,Rust会起飞?
  • 深度学习项目学习
  • 【3Ds Max】弯曲命令的简单使用
  • opencv基础:几个常用窗口方法
  • web后端解决跨域问题
  • 06 json数据解析和列表控件
  • 分布式 - 消息队列Kafka:Kafka生产者架构和配置参数
  • MAUI+Blazor:windows 打包踩坑