Cypher 是一种专门用于图数据库的查询语言,由 Neo4j 公司开发。它设计得类似于 SQL,但更专注于图结构,使得用户能够以直观且声明式的方式查询图数据。以下是一些基本的 Cypher 语法和查询示例,帮助你了解如何使用 Cypher 语言进行图查询。
Cypher 的基本结构包括模式匹配(pattern matching)、条件和可选的操作。其基本语法如下:
MATCH pattern
[WHERE condition]
[RETURN expression]
MATCH:用于定义要查询的模式。WHERE:用于添加查询条件。RETURN:用于指定要返回的表达式。查询数据库中的所有节点:
MATCH (n)
RETURN n
查询具有特定属性的节点:
MATCH (n:Person {name: 'Alice'})
RETURN n
查询节点和它们之间的关系:
MATCH (n:Person)-[r:FRIEND]->(m:Person)
RETURN n, r, m
查询具有特定类型的关系:
MATCH (n:Person)-[r:FRIEND|ENEMY]->(m:Person)
WHERE r.type = 'FRIEND'
RETURN n, r, m
查询节点之间的路径:
MATCH path = (n:Person {name: 'Alice'})-[:FRIEND*]-(m:Person {name: 'Bob'})
RETURN path
进行聚合查询,例如计算特定类型关系的数量:
MATCH (n:Person)-[r:FRIEND]->(m:Person)
RETURN count(r)
使用参数化查询以提高查询的安全性和灵活性:
MATCH (n:Person {name: $name})
RETURN n
在使用时,可以这样传递参数:
MATCH (n:Person {name: $name})
RETURN n
PARAMETERS $name AS 'Alice'
LIMIT 和 SKIP 关键字来限制返回的记录数或跳过某些记录:MATCH (n:Person)
RETURN n
LIMIT 10
COLLECT、UNION、INTERSECT)来处理集合数据:MATCH (n:Person)-[r:FRIEND]->(m:Person)
RETURN COLLECT({name: n.name, friend: m.name})
Cypher 语言提供了一种强大而直观的方式来查询图数据。通过模式匹配、条件和操作,用户可以轻松地执行复杂的图查询。无论是简单的节点和关系查询,还是复杂的路径和聚合操作,Cypher 都能有效地支持这些需求。