Cypher学习笔记

  Cypher是一种声明式图形查询语言,可用于表达性和高效的图形查询和更新。它旨在同时适合开发人员和运营专业人员。Cypher的设计既简单又强大。可以轻松表达高度复杂的数据库查询,使您可以专注于自己的域,而不会迷失在数据库访问中。

  Cypher的结构基于英文散文和简洁的图像,使查询既易于编写,也易于阅读。

  子句链接在一起,并且它们相互之间提供中间结果集。例如,来自一个MATCH子句的匹配变量将是存在下一个子句的上下文。查询语言由几个不同的子句组成。

  • MATCH:要匹配的图形模式。这是从图形中获取数据的最常用方法。
  • WHERE:在自己的权利不是一个条款,但相当一部分MATCHOPTIONAL MATCHWITH。向模式添加约束,或过滤通过的中间结果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):将值设置为属性,并使用SETREMOVE删除节点上的标签。
  • MERGE:匹配现有的或创建新的节点和模式。与独特的约束一起使用时,这尤其有用。
原文地址:https://www.cnblogs.com/cocoxu1992/p/12103600.html