Cypher学习笔记
Cypher是一种声明式图形查询语言,可用于表达性和高效的图形查询和更新。它旨在同时适合开发人员和运营专业人员。Cypher的设计既简单又强大。可以轻松表达高度复杂的数据库查询,使您可以专注于自己的域,而不会迷失在数据库访问中。
Cypher的结构基于英文散文和简洁的图像,使查询既易于编写,也易于阅读。
子句链接在一起,并且它们相互之间提供中间结果集。例如,来自一个MATCH
子句的匹配变量将是存在下一个子句的上下文。查询语言由几个不同的子句组成。
MATCH
:要匹配的图形模式。这是从图形中获取数据的最常用方法。WHERE
:在自己的权利不是一个条款,但相当一部分MATCH
,OPTIONAL MATCH
和WITH
。向模式添加约束,或过滤通过的中间结果WITH
。RETURN
:返回什么。
CREATE (john:Person {name: 'John'}) CREATE (joe:Person {name: 'Joe'}) CREATE (steve:Person {name: 'Steve'}) CREATE (sara:Person {name: 'Sara'}) CREATE (maria:Person {name: 'Maria'}) CREATE (john)-[:FRIEND]->(joe)-[:FRIEND]->(steve)
例如,这是一个查询,该查询在返回“约翰”和找到的任何朋友之前,先找到一个名为“约翰”和“约翰的”朋友(虽然不是他的直接朋友)的用户。
MATCH (john {name: 'John'})-[:friend]->()-[:friend]->(fof) RETURN john.name, fof.name
接下来,我们将添加过滤以设置更多的运动部件:
我们获取用户名列表,并从该列表中查找具有名称的所有节点,匹配其朋友,并仅返回具有以'S'开头的'name'属性的跟随用户。
MATCH (user)-[:friend]->(follower) WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*' RETURN user.name, follower.name
以下是用于更新图形的子句示例:
CREATE
(和DELETE
):创建(和删除)节点和关系。SET
(和REMOVE
):将值设置为属性,并使用SET
和REMOVE
删除节点上的标签。MERGE
:匹配现有的或创建新的节点和模式。与独特的约束一起使用时,这尤其有用。