Neo4j Cypher 常用命令速查表
把 Neo4j Cypher 查询语言最常用的命令整理成速查,写图查询时对照查。
返回 数据库创建节点与关系 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 或用图算法。