Neo4j常见语法-collect

collect的用法(COLLECT 是一个重要的聚合函数,用于将多行数据聚合成集合(列表)。它在分组查询、构建嵌套数据结构和处理一对多关系时非常有用)
(1)、基本语法与作用

COLLECT(<expression>) AS <variable>

核心功能:
将查询结果中的多行数据按照指定表达式聚合成一个列表。
执行时机:
COLLECT 必须出现在 WITH 或 RETURN 子句中,且通常与 GROUP BY 结合使用。

(2)、聚合节点属性

MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
RETURN a.name, COLLECT(m.title) AS movies  // 返回每个人参演的电影列表

返回结果如下图所示
在这里插入图片描述

### Neo4j 的 Cypher 查询语言基础 #### 一、Cypher 的定义与特点 Cypher 是一种声明式的图查询语言,专为 Neo4j 图数据库设计。它的核心目标是以简洁的方式表达复杂的图结构查询需求[^1]。该语言受到 SQL 的启发,但专注于图形数据模型的特性,支持通过 ASCII 艺术风格的语法来描述节点和关系。 以下是 Cypher 的主要特点: - **声明式语法**:用户只需说明要做什么,而非具体实现细节。 - **高效性**:能够快速执行复杂的关系型查询操作。 - **易读性**:采用直观的模式匹配方式表示图中的路径和连接[^2]。 --- #### 二、基本语法规则分类 根据功能划分,Cypher 可分为三大类语句: ##### 1. 读语句 这些语句主要用于检索数据,常见的关键字包括: - `MATCH` 和 `OPTIONAL MATCH`:用于查找满足特定条件的节点或关系[^3]。 - `WHERE`:过滤结果集。 - `START`(已废弃):指定起始点。 - `Aggregation`:聚合函数如 COUNT() 或 SUM()。 - `LOAD CSV`:加载外部文件到数据库中。 示例代码展示如何使用 `MATCH` 查找朋友的朋友列表: ```cypher MATCH (p1:Person)-[:FRIEND_OF]->(p2:Person)<-[:FRIEND_OF]-(p3:Person) RETURN p1.name, COLLECT(p3.name) AS friendsOfFriends; ``` ##### 2. 写语句 此类语句负责修改数据库的内容,涉及的操作有: - `CREATE`:新增节点或关系。 - `MERGE`:如果不存在就创建;存在则返回已有记录。 - `SET`:设置属性值或者标签。 - `DELETE` 和 `REMOVE`:移除节点/关系及其关联的数据项。 - `FOREACH`:批量处理集合内的每一项。 - `CREATE UNIQUE`(已被弃用):确保唯一性的旧方法。 下面是一个例子演示怎样利用 `MERGE` 插入新实体并附加信息: ```cypher MERGE (movie:Movie {title:"The Matrix"}) ON CREATE SET movie.year = 1999, movie.genre = 'Science Fiction' RETURN movie.title, movie.year, movie.genre; ``` ##### 3. 通用语句 这类命令适用于任何场景下辅助其他两类完成任务的功能扩展: - `RETURN`:输出最终的结果列。 - `ORDER BY`, `LIMIT`, `SKIP`:控制排序以及分页显示数量。 - `WITH`:作为中间过渡阶段传递变量给后续计算部分。 - `UNWIND`:拆解数组成为单独行项目逐一分析。 - `UNION` / `UNION ALL`:合并多个 SELECT 子句产生的表单视图。 - `CALL`:调用存储过程或者其他预编译脚本模块。 简单实例体现 `WITH` 的用途——先统计再筛选最高频次的城市居住者姓名清单: ```cypher MATCH (person:Person) WITH person.city as cityName, count(*) as cityCount WHERE cityCount > 50 RETURN cityName ORDER BY cityCount DESC LIMIT 10; ``` --- #### 三、设计理念总结 Cypher 的设计哲学围绕着简化开发者的工作流程展开,强调让程序员把精力集中在解决实际业务逻辑上而不是底层技术难题之上。其独特的可视化模式匹配机制使得即使是初学者也能迅速掌握基础知识,并能轻松写出具有一定难度的应用程序接口(APIs),从而极大提高了生产力水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值