在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条)