Neo4j Cypher 常用命令速查表

把 Neo4j Cypher 查询语言最常用的命令整理成速查,写图查询时对照查。

数据库·共 30 条命令·最后更新 2026-07-19
返回 数据库

创建节点与关系 5

CREATE (n:Person {name: "Alice"})
创建节点
CREATE (a:Person)-[:KNOWS]->(b:Person)
创建关系
CREATE (a:Person {name: "Alice"})-[:KNOWS {since: 2020}]->(b:Person {name: "Bob"})
创建带属性的节点和关系
MERGE (n:Person {name: "Alice"})
存在则匹配,不存在则创建
MERGE (a)-[:KNOWS]->(b) ON CREATE SET a.created = timestamp()
MERGE 带回调

查询 6

MATCH (n:Person) RETURN n
查询所有 Person 节点
MATCH (n:Person {name: "Alice"}) RETURN n
按属性查询
MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN a, b
查询关系
MATCH (a:Person)-[:KNOWS*2]->(b:Person) RETURN a, b
查询 2 跳关系
MATCH (a:Person)-[:KNOWS*1..3]->(b:Person) RETURN a, b
查询 1-3 跳关系
MATCH path = (a)-[*]->(b) RETURN path
查询路径

更新与删除 6

MATCH (n:Person {name: "Alice"}) SET n.age = 30
更新属性
MATCH (n:Person {name: "Alice"}) SET n += {age: 30, city: "Beijing"}
批量更新
MATCH (n:Person {name: "Alice"}) REMOVE n.age
删除属性
MATCH (n:Person {name: "Alice"}) DELETE n
删除节点(必须无关系)
MATCH (n:Person {name: "Alice"}) DETACH DELETE n
删除节点及其所有关系
MATCH (a)-[r:KNOWS]->(b) DELETE r
删除关系

聚合与排序 7

MATCH (n:Person) RETURN count(n)
计数
MATCH (n:Person) RETURN n.name, n.age ORDER BY n.age DESC
排序
MATCH (n:Person) RETURN n.age, count(*) ORDER BY n.age
分组计数
MATCH (n:Person) RETURN collect(n.name)
收集为数组
MATCH (n:Person) RETURN avg(n.age), min(n.age), max(n.age)
聚合函数
MATCH (n:Person) RETURN n LIMIT 10
限制返回数量
MATCH (n:Person) RETURN n SKIP 5 LIMIT 10
分页

索引与约束 6

CREATE INDEX ON :Person(name)
创建索引
CREATE CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE
唯一约束
CREATE CONSTRAINT ON (n:Person) ASSERT exists(n.name)
存在约束
DROP INDEX ON :Person(name)
删除索引
DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE
删除约束
CALL db.indexes()
列出所有索引

💡 提示

  • MATCH 查询前先用 EXPLAIN 查看执行计划,避免全图扫描。
  • MERGE 比 CREATE 安全,避免重复创建节点。
  • 长路径查询(*1..10)可能很慢,建议加 LIMIT 或用图算法。