Neo4j 笔记 2 Cypher
Cypher 是neo4j 的查询语言,正如SQL 之于 关系型数据库。可以实现select,insert, update, delete。
图的声明语句也是 Cypher 的一部分,如
(a) -[:LIKES]-> (b)
概述
Cypher 的语法看起来有点像SQL ,支持表达式,where 从句。一个 Cypher 语句 通常是从 MATCH 关键字开始的。结构如下:
MATCH (node) RETURN node.property
MATCH (node1)-->(node2)
RETURN node2.propertyA, node2.propertyB
Cypher 运用模式匹配来搜索节点和关系。如果我想找到任何 由 ACTEDIN 关系 连接起来的两个节点,需要这样写: ``` MATCH (actor)-[:ACTEDIN]->(movie) RETURN actor, movie ```
这里的 actor 和 movie 作为变量名,存储了连接在ACTED_IN 关系两端的 节点(Node)。也可以在RETURN 从句里面 访问 变量的数据。根据 一个指定关系(Relation ) 来匹配 节点的 通用写法如下:
MATCH (node1)-[:REL_TYPE]->(node2)
...
neo4j 的Relation 也是图模型的一部分,它也可以携带属性。如果想要得到关系的属性,要用一个变量名来表示关系。通过[rel:TYPE]
的匹配方式,每次匹配到的关系对象会绑定到该变量上,以便我们访问它的属性。
MATCH (node1)-[rel:TYPE]->(node2)
RETURN rel.property
上面我们看到了 匹配特定类型 关系(Relation)
的语法。其实neo4j 中节点和关系都拥有类型。所以节点和关系都可以用 类型标签来进行 模式匹配 , 通常的写法如下。
MATCH (node:Label) RETURN node
MATCH (node1:Label1)-[:REL_TYPE]->(node2:Label2)
RETURN node1, node2