Appearance
关系操作
创建关系
基本语法
cypher
CREATE (源节点)-[关系变量:关系类型 {属性: 值, ...}]->(目标节点)示例
在已存在的节点之间创建关系
cypher// 先匹配两个节点,然后创建关系 MATCH (a:Person {name: 'John'}), (b:Person {name: 'Alice'}) CREATE (a)-[r:FRIENDS_WITH {since: 2010}]->(b) RETURN a, r, b创建节点的同时创建关系
cypher// 创建两个新节点和它们之间的关系 CREATE (a:Person {name: 'John'})-[r:FRIENDS_WITH {since: 2010}]->(b:Person {name: 'Alice'}) RETURN a, r, b创建多个关系
cypherMATCH (a:Person {name: 'John'}), (b:Person {name: 'Alice'}), (c:Person {name: 'Bob'}) CREATE (a)-[r1:FRIENDS_WITH {since: 2010}]->(b), (a)-[r2:FRIENDS_WITH {since: 2012}]->(c) RETURN a, r1, b, r2, c创建双向关系
cypherMATCH (a:Person {name: 'John'}), (b:Person {name: 'Alice'}) CREATE (a)-[r1:FRIENDS_WITH {since: 2010}]->(b), (b)-[r2:FRIENDS_WITH {since: 2010}]->(a) RETURN a, r1, b, r2
查询关系
基本语法
cypher
MATCH (源节点)-[关系变量:关系类型]->(目标节点)
WHERE 条件
RETURN 源节点, 关系变量, 目标节点示例
查询所有关系
cypher// 查询所有关系 MATCH ()-[r]->() RETURN r // 查询所有 FRIENDS_WITH 关系 MATCH ()-[r:FRIENDS_WITH]->() RETURN r根据关系类型查询
cypherMATCH (a:Person)-[r:WORKS_AT]->(b:Company) RETURN a, r, b根据关系属性查询
cypherMATCH (a:Person)-[r:FRIENDS_WITH]->(b:Person) WHERE r.since > 2009 RETURN a, r, b查询特定路径的关系
cypherMATCH (a:Person {name: 'John'})-[r:FRIENDS_WITH*1..2]->(b:Person) RETURN a, r, b查询关系的方向
cypher// 查询从 John 出发的关系 MATCH (a:Person {name: 'John'})-[r]->(b) RETURN a, r, b // 查询指向 John 的关系 MATCH (a)-[r]->(b:Person {name: 'John'}) RETURN a, r, b // 查询无方向的关系 MATCH (a:Person {name: 'John'})-[r]-(b) RETURN a, r, b
更新关系
基本语法
cypher
MATCH (源节点)-[关系变量:关系类型]->(目标节点)
WHERE 条件
SET 关系变量.属性 = 值
RETURN 源节点, 关系变量, 目标节点示例
更新关系属性
cypherMATCH (a:Person {name: 'John'})-[r:FRIENDS_WITH]->(b:Person {name: 'Alice'}) SET r.since = 2009, r.strength = 5 RETURN a, r, b使用映射更新关系属性
cypherMATCH (a:Person {name: 'John'})-[r:FRIENDS_WITH]->(b:Person {name: 'Alice'}) SET r = {since: 2009, strength: 5, status: 'active'} RETURN a, r, b添加新属性
cypherMATCH (a:Person {name: 'John'})-[r:FRIENDS_WITH]->(b:Person {name: 'Alice'}) SET r.strength = 5 RETURN a, r, b移除属性
cypherMATCH (a:Person {name: 'John'})-[r:FRIENDS_WITH]->(b:Person {name: 'Alice'}) REMOVE r.strength RETURN a, r, b
删除关系
基本语法
cypher
MATCH (源节点)-[关系变量:关系类型]->(目标节点)
WHERE 条件
DELETE 关系变量示例
删除特定关系
cypherMATCH (a:Person {name: 'John'})-[r:FRIENDS_WITH]->(b:Person {name: 'Alice'}) DELETE r删除所有特定类型的关系
cypherMATCH ()-[r:FRIENDS_WITH]->() DELETE r删除节点的所有关系
cypherMATCH (a:Person {name: 'John'})-[r]-() DELETE r删除关系的同时删除节点
cypherMATCH (a:Person {name: 'John'}) DETACH DELETE a
小结
关系操作是图数据库的核心特性,通过关系可以表示和查询数据之间的复杂连接。通过本文的介绍,您应该掌握了关系操作的基本语法和技巧。在接下来的章节中,我们将介绍属性操作,这是管理节点和关系数据的重要部分。