图数据库查询语言
Cypher 是什么?
用画图的方式写查询:(a)-[:KNOWS]->(b)
类比:用简笔画描述关系,而不是写 SQL
语法直觉
圆括号是节点,方括号是关系,箭头是方向。MATCH (u:User {id:1})-[:KNOWS]->(f) RETURN f.name 就是「找用户 1 的朋友的名字」。
常用写法
掌握这几个模式,日常查询就够用了。
- 变长路径:-[:KNOWS*1..3]-> 表示 1 到 3 跳
- 可选匹配:OPTIONAL MATCH,类似 LEFT JOIN
- 聚合:count()、collect(),配合 WITH 分步处理
- 写入:MERGE 是「有则匹配、无则创建」,做幂等导入很好用
性能提示
一定要给起点加标签和索引属性,否则会全图扫描。用 PROFILE 看执行计划,关注 AllNodesScan——看到它基本就是索引没建对。