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

Neo4j 常用查询语句

Neo4j 常用查询语句

Neo4j 是一个图数据库,查询语言是 Cypher,它类似于 SQL 但针对图形数据进行了优化。Cypher 语法直观易懂,适合用来处理图数据。本文将介绍一些 Neo4j 中常用的查询语句,帮助你快速掌握图数据的操作方法。

一、查询所有节点

1.1 查询所有节点

MATCH (n)
RETURN n

此查询返回图数据库中的所有节点。MATCH 用于指定查询的模式,(n) 表示匹配所有节点,RETURN 用于指定返回的内容。

1.2 查询特定标签的节点

如果你只想查询某一类节点(比如 Person 标签的节点):

MATCH (p:Person)
RETURN p

1.3 查询特定属性的节点

查询具有特定属性的节点,例如查询 Person 标签中 name 属性为 “Alice” 的节点:

MATCH (p:Person {name: 'Alice'})
RETURN p

二、查询所有关系

2.1 查询所有关系

查询数据库中所有的关系(无论类型):

MATCH ()-[r]->()
RETURN r

2.2 查询特定类型的关系

例如查询所有 KNOWS 类型的关系:

MATCH ()-[r:KNOWS]->()
RETURN r

2.3 查询有特定属性的关系

查询关系上具有特定属性的关系,例如 KNOWS 类型的关系中,属性 since 为 2020 的关系:

MATCH ()-[r:KNOWS {since: 2020}]->()
RETURN r

三、查询节点及其关系

3.1 查询节点及其关系

查询所有 Person 标签的节点及其与其他节点的关系:

MATCH (p:Person)-[r]->()
RETURN p, r

3.2 查询节点和多个关系

查询 Person 标签的节点及其与 Movie 标签节点的关系:

MATCH (p:Person)-[r]->(m:Movie)
RETURN p, r, m

3.3 查询节点和指定路径

查询与 Person 节点连接的所有路径:

MATCH p=(p:Person)-[r]->()
RETURN p

四、筛选和排序

4.1 使用 WHERE 进行过滤

使用 WHERE 子句来过滤结果。例如,查询 Person 标签中 name 为 “Alice” 且 age 大于 30 的节点:

MATCH (p:Person)
WHERE p.name = 'Alice' AND p.age > 30
RETURN p

4.2 排序

使用 ORDER BY 对查询结果进行排序,例如按 age 属性升序排列:

MATCH (p:Person)
RETURN p
ORDER BY p.age ASC

4.3 限制结果数量

使用 LIMIT 限制查询返回的结果数量。例如,只返回前 5 个节点:

MATCH (p:Person)
RETURN p
LIMIT 5

五、聚合函数

5.1 计算节点的数量

查询 Person 标签节点的数量:

MATCH (p:Person)
RETURN count(p)

5.2 聚合求和

查询 Person 标签节点的年龄总和:

MATCH (p:Person)
RETURN sum(p.age)

5.3 聚合求最大值和最小值

查询 Person 标签节点的最大年龄和最小年龄:

MATCH (p:Person)
RETURN max(p.age), min(p.age)

5.4 使用 avg 计算平均值

查询 Person 标签节点的平均年龄:

MATCH (p:Person)
RETURN avg(p.age)

六、创建节点和关系

6.1 创建节点

创建一个新的 Person 节点:

CREATE (p:Person {name: 'Alice', age: 30})
RETURN p

6.2 创建关系

创建两个节点之间的关系。例如,创建一个 PersonMovie 节点之间的 LIKES 关系:

MATCH (p:Person {name: 'Alice'}), (m:Movie {title: 'Inception'})
CREATE (p)-[:LIKES]->(m)
RETURN p, m

6.3 创建多个节点和关系

同时创建多个节点和关系:

CREATE (p1:Person {name: 'Alice'}), (p2:Person {name: 'Bob'})
CREATE (p1)-[:KNOWS]->(p2)
RETURN p1, p2

七、更新节点和关系

7.1 更新节点属性

更新一个节点的属性,例如修改 Person 节点的 age 属性:

MATCH (p:Person {name: 'Alice'})
SET p.age = 31
RETURN p

7.2 更新关系属性

更新关系的属性,例如修改 KNOWS 关系中的 since 属性:

MATCH (p1:Person {name: 'Alice'})-[r:KNOWS]->(p2:Person)
SET r.since = 2022
RETURN r

八、删除节点和关系

8.1 删除节点

删除节点(删除前需要确保节点没有关联关系):

MATCH (p:Person {name: 'Alice'})
DELETE p

8.2 删除关系

删除节点之间的关系:

MATCH (p1:Person {name: 'Alice'})-[r:KNOWS]->(p2:Person)
DELETE r

8.3 删除节点和关系

同时删除节点及其关联的关系:

MATCH (p:Person {name: 'Alice'})
OPTIONAL MATCH (p)-[r]->()
DELETE p, r

九、路径查询

9.1 查询单一路径

查询从 Person 节点到 Movie 节点的路径:

MATCH p=(p:Person)-[:LIKES]->(m:Movie)
RETURN p

9.2 查询具有多种关系类型的路径

查询从 PersonMovie 的路径,可以是 LIKESWATCHED 关系:

MATCH p=(p:Person)-[:LIKES|WATCHED]->(m:Movie)
RETURN p

9.3 查询路径的长度

查询路径的长度:

MATCH p=(p:Person)-[:KNOWS*2..4]->(m:Person)
RETURN p

这个查询返回从 PersonPerson 的路径,路径长度为 2 到 4。


十、总结

Cypher 是 Neo4j 的图数据库查询语言,它提供了一种简洁且易于理解的方式来操作图数据。本文介绍了 Neo4j 常用的查询语句,包括查询、筛选、排序、聚合、创建、更新、删除等操作。掌握这些常用查询语句将帮助你在 Neo4j 中高效地操作图数据。

希望这篇博客能够帮助你更好地理解和使用 Neo4j。如果你想深入了解更多高级功能,可以参考 Neo4j 官方文档。

http://www.xdnf.cn/news/162577.html

相关文章:

  • Deep Reinforcement learning for real autonomous mobile robot navigation
  • 【记一次亚马逊普华永道审计流程】
  • Go context 包的底层实现原理
  • 嵌入式C语言基础入门
  • 栈和堆内存可视化演示页面
  • Python编程中的基本语句
  • Webpack模块打包工具
  • Java基础第五章、面向对象程序设计
  • FastAPI 零基础入门指南:10 分钟搭建高性能 API
  • Linux 系统渗透提权
  • Bento4的安装和简单转码
  • 使用Java 操作 Nginx 配置文件
  • 一致性哈希详解:优雅地扩展分布式系统
  • 反爬加密字体替换机制解析
  • HBase协处理器深度解析:原理、实现与最佳实践
  • 【Qt】信号与槽:构建灵活交互的核心机制
  • JAVAEE初阶01
  • 数据安全和合规性市场分析
  • MES系列-MOM(Manufacturing Operations Management,制造运营管理)
  • Redis为什么不直接使用C语言中的字符串?
  • Eigen迭代求解器类
  • async 和 await 详解
  • 论文阅读:2025 arxiv Aligning to What? Limits to RLHF Based Alignment
  • Lustre/Scade/Swan 语义性质中的因果性分析介绍
  • ES6 Map/WeakMap/Set/WeakSet 全解指南
  • 2软考系统架构设计师:第一章系统架构概述 - 练习题附答案及超详细解析
  • 直接映射例题及解析
  • 大模型微调与蒸馏的差异性与相似性分析
  • 字节跳动开源数字人模型latentsync1.5,性能、质量进一步优化~
  • 1.1.1 用于排序规则的IComparable接口使用介绍