Skip to content

基础查询技巧

匹配模式(MATCH)

基本语法

cypher
MATCH (节点变量:标签)-[关系变量:关系类型]->(目标节点:标签)
RETURN 结果

示例

  1. 基本模式匹配

    cypher
    // 匹配所有 Person 节点
    MATCH (p:Person)
    RETURN p
    
    // 匹配具有朋友关系的节点
    MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person)
    RETURN a, b
  2. 复杂模式匹配

    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
  3. 可变长度路径

    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 结果

示例

  1. 基本条件

    cypher
    MATCH (p:Person)
    WHERE p.age > 25
    RETURN p
  2. 逻辑运算符

    cypher
    MATCH (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
  3. 字符串操作

    cypher
    MATCH (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
  4. 列表操作

    cypher
    MATCH (p:Person)
    WHERE p.age IN [25, 30, 35]
    RETURN p
    
    MATCH (p:Person)
    WHERE p.skills CONTAINS 'Java'
    RETURN p
  5. NULL 检查

    cypher
    MATCH (p:Person)
    WHERE p.email IS NOT NULL
    RETURN p

排序(ORDER BY)

基本语法

cypher
MATCH (节点变量:标签)
RETURN 结果
ORDER BY 属性 [ASC|DESC]

示例

  1. 升序排序

    cypher
    MATCH (p:Person)
    RETURN p.name, p.age
    ORDER BY p.age
  2. 降序排序

    cypher
    MATCH (p:Person)
    RETURN p.name, p.age
    ORDER BY p.age DESC
  3. 多字段排序

    cypher
    MATCH (p:Person)
    RETURN p.name, p.age
    ORDER BY p.age DESC, p.name ASC

限制结果(LIMIT)

基本语法

cypher
MATCH (节点变量:标签)
RETURN 结果
LIMIT 数量

示例

  1. 限制返回数量

    cypher
    MATCH (p:Person)
    RETURN p
    LIMIT 10
  2. 结合排序使用

    cypher
    MATCH (p:Person)
    RETURN p.name, p.age
    ORDER BY p.age DESC
    LIMIT 5

聚合函数

常用聚合函数

  • COUNT:计数
  • SUM:求和
  • AVG:平均值
  • MIN:最小值
  • MAX:最大值
  • COLLECT:收集为列表

示例

  1. 计数

    cypher
    // 计算 Person 节点数量
    MATCH (p:Person)
    RETURN COUNT(p)
    
    // 计算每个城市的人数
    MATCH (p:Person)-[:LIVES_IN]->(c:City)
    RETURN c.name, COUNT(p)
  2. 求和与平均值

    cypher
    // 计算所有人的平均年龄
    MATCH (p:Person)
    RETURN AVG(p.age)
    
    // 计算每个公司的员工总年龄
    MATCH (p:Person)-[:WORKS_AT]->(c:Company)
    RETURN c.name, SUM(p.age)
  3. 收集列表

    cypher
    // 收集每个公司的员工姓名
    MATCH (p:Person)-[:WORKS_AT]->(c:Company)
    RETURN c.name, COLLECT(p.name)

分页查询

基本语法

cypher
MATCH (节点变量:标签)
RETURN 结果
ORDER BY 属性
SKIP 跳过数量
LIMIT 返回数量

示例

  1. 分页查询
    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 的进阶功能,包括高级查询、索引与约束、事务管理、数据导入与导出以及图算法等内容。