Neo4j常见写法-with

with用法(WITH 是一个关键子句,用于将查询的不同部分连接起来。它允许你在单个查询中执行多个操作步骤,处理中间结果,并控制变量的作用域)

(1)基本语法与作用

核心功能:

将前一个查询部分的结果传递给后续部分,支持变量重命名、过滤、聚合等操作。

执行时机:

WITH 必须出现在 MATCH、CREATE、MERGE 等操作之间,用于分割查询逻辑。

(2)传递变量到后续子句

bash 复制代码
MATCH (a:Actor)-[:ACTED_IN]->(m:Movie)
WITH a, COLLECT(m.title) AS movies  // 将演员和电影列表传递给下一步
WHERE SIZE(movies) > 3  // 过滤参演电影超过3部的演员
RETURN a.name, movies

(3)重命名变量

bash 复制代码
MATCH (p:Person)-[:FRIEND]->(f:Person)
WITH p AS user, COLLECT(f.name) AS friends  // 重命名变量
RETURN user.name, friends

(4)结合聚合函数

bash 复制代码
MATCH (u:User)-[r:RATED]->(m:Movie)
WITH m, AVG(r.score) AS avgRating  // 计算每部电影的平均评分
WHERE avgRating > 8  // 过滤高分电影
RETURN m.title, avgRating