Appearance
基础查询技巧
匹配模式(MATCH)
基本语法
cypher
MATCH (节点变量:标签)-[关系变量:关系类型]->(目标节点:标签)
RETURN 结果示例
基本模式匹配
cypher// 匹配所有 Person 节点 MATCH (p:Person) RETURN p // 匹配具有朋友关系的节点 MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person) RETURN a, b复杂模式匹配
cypher// 匹配朋友的朋友 MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person)-[:FRIENDS_WITH]->(c:Person) RETURN a, b, c // 匹配不同类型的关系 MATCH (a:Person)-[:WORKS_AT]->(b:Company)-[:LOCATED_IN]->(c:City) RETURN a, b, c可变长度路径
cypher// 匹配 1-3 层的朋友关系 MATCH (a:Person)-[:FRIENDS_WITH*1..3]->(b:Person) RETURN a, b // 匹配任意长度的路径 MATCH (a:Person)-[:FRIENDS_WITH*]->(b:Person) RETURN a, b
过滤条件(WHERE)
基本语法
cypher
MATCH (节点变量:标签)
WHERE 条件
RETURN 结果示例
基本条件
cypherMATCH (p:Person) WHERE p.age > 25 RETURN p逻辑运算符
cypherMATCH (p:Person) WHERE p.age > 25 AND p.name STARTS WITH 'J' RETURN p MATCH (p:Person) WHERE p.age < 18 OR p.age > 60 RETURN p MATCH (p:Person) WHERE NOT p.age > 25 RETURN p字符串操作
cypherMATCH (p:Person) WHERE p.name CONTAINS 'John' RETURN p MATCH (p:Person) WHERE p.name STARTS WITH 'J' RETURN p MATCH (p:Person) WHERE p.name ENDS WITH 'son' RETURN p列表操作
cypherMATCH (p:Person) WHERE p.age IN [25, 30, 35] RETURN p MATCH (p:Person) WHERE p.skills CONTAINS 'Java' RETURN pNULL 检查
cypherMATCH (p:Person) WHERE p.email IS NOT NULL RETURN p
排序(ORDER BY)
基本语法
cypher
MATCH (节点变量:标签)
RETURN 结果
ORDER BY 属性 [ASC|DESC]示例
升序排序
cypherMATCH (p:Person) RETURN p.name, p.age ORDER BY p.age降序排序
cypherMATCH (p:Person) RETURN p.name, p.age ORDER BY p.age DESC多字段排序
cypherMATCH (p:Person) RETURN p.name, p.age ORDER BY p.age DESC, p.name ASC
限制结果(LIMIT)
基本语法
cypher
MATCH (节点变量:标签)
RETURN 结果
LIMIT 数量示例
限制返回数量
cypherMATCH (p:Person) RETURN p LIMIT 10结合排序使用
cypherMATCH (p:Person) RETURN p.name, p.age ORDER BY p.age DESC LIMIT 5
聚合函数
常用聚合函数
- COUNT:计数
- SUM:求和
- AVG:平均值
- MIN:最小值
- MAX:最大值
- COLLECT:收集为列表
示例
计数
cypher// 计算 Person 节点数量 MATCH (p:Person) RETURN COUNT(p) // 计算每个城市的人数 MATCH (p:Person)-[:LIVES_IN]->(c:City) RETURN c.name, COUNT(p)求和与平均值
cypher// 计算所有人的平均年龄 MATCH (p:Person) RETURN AVG(p.age) // 计算每个公司的员工总年龄 MATCH (p:Person)-[:WORKS_AT]->(c:Company) RETURN c.name, SUM(p.age)收集列表
cypher// 收集每个公司的员工姓名 MATCH (p:Person)-[:WORKS_AT]->(c:Company) RETURN c.name, COLLECT(p.name)
分页查询
基本语法
cypher
MATCH (节点变量:标签)
RETURN 结果
ORDER BY 属性
SKIP 跳过数量
LIMIT 返回数量示例
- 分页查询cypher
// 第 1 页,每页 10 条 MATCH (p:Person) RETURN p ORDER BY p.name SKIP 0 LIMIT 10 // 第 2 页,每页 10 条 MATCH (p:Person) RETURN p ORDER BY p.name SKIP 10 LIMIT 10
小结
基础查询技巧是使用 Cypher 进行数据查询的核心内容,通过本文的介绍,您应该掌握了匹配模式、过滤条件、排序、限制结果、聚合函数和分页查询等基本技巧。这些技巧将帮助您更有效地查询和分析图数据库中的数据。
在接下来的章节中,我们将介绍 Neo4j 的进阶功能,包括高级查询、索引与约束、事务管理、数据导入与导出以及图算法等内容。