1. 文章
  2. 文章详情

Neo4j CQL - 关系(Relationship)查询

在Cypher语言中,关系分为三种:符号--,表示有关系,忽略关系的类型和方向;符号--><--,表示有方向的关系

关系的方向

在Neo4j中,两个节点之间的关系是有方向性的。 它们是单向或双向的。

由于Neo4j遵循属性图数据模型,只支持方向关系。 如果我们尝试创建一个没有任何方向的关系,那么Neo4j DB服务器应该抛出一个错误。

语法 - 

CREATE (node1-details)-[relationship-details]->(node2-details)

这里 -

    node1-details是“From Node”节点详细信息

    node2-details是“到节点”节点详细信息

    relationship-details是关系详细信息

如果我们观察上面的语法,它使用一个箭头标记:() - []→()。 它表示从左侧节点到右侧节点的方向。

如果我们尝试使用相同的语法,没有箭头标记like() - [] - (),这意味着没有方向的关系。 然后Neo4j DB服务器应该抛出一个错误消息

示例 -

步骤1 -打开Neo4j数据浏览器。

步骤2 -在数据浏览器上键入以下命令。

CREATE (n1:Node1)-[r1:Relationship]-(n2:Node2)

步骤3 -点击“执行”按钮,观察消息。

如果我们观察到上面的错误消息,它显示Neo4j CQL CREATE命令仅支持方向关系。

查询整个数据图形

match(n) return n;

查询跟指定节点有关系的节点

示例脚本返回跟Movie标签有关系的所有节点

match(n)--(m:Movie) 
return n;

查询有向关系的节点

MATCH (:Person { name: 'Tom Hanks' })-->(movie)
RETURN movie;

为关系命名,通过[r]为关系定义一个变量名,通过函数type获取关系的类型

MATCH (:Person { name: 'Tom Hanks' })-[r]->(movie)
RETURN r,type(r);

查询特定的关系类型,通过[Variable:RelationshipType{Key:Value}]指定关系的类型和属性

MATCH (:Person { name: 'Tom Hanks' })-[r:ACTED_IN{roles:'Forrest'}]->(movie)
RETURN r,type(r);

发表评论

登录后才能评论

评论列表(0条)