Cypher查询语言中-->、<--(双连字符)的含义是什么?与单连字符->、<-是否相同?
关于Cypher中双连字符箭头(--> / <--)的含义与用法
嘿,这个问题我当初刚学Cypher的时候也疑惑过!其实这俩写法本质上是语法层面的等价简化,只是风格不同而已,给你详细拆解下:
核心含义
双连字符箭头-->和<--,用来匹配两个节点之间指定方向的直接关系(路径长度固定为1),而且这种写法默认不指定关系类型,也不会把关系绑定到某个变量上。
和单连字符箭头的对比
单连字符的->/<-其实和-->/<--是完全等价的,都是-[]->或<-[]-的简写形式。举个例子:
- 这两行查询的效果一模一样:
MATCH (user)-->(post) RETURN user.name, post.title;
MATCH (user)->(post) RETURN user.name, post.title;
它们都能匹配所有用户节点指向帖子节点的直接关系,不管关系类型是CREATED还是SHARED之类的。
什么时候不能用简化箭头?
如果你的查询需要做以下操作,就必须用完整的关系模式(带方括号[]):
- 绑定关系变量,比如要获取关系的属性:
MATCH (user)-[r:CREATED]->(post) RETURN r.createTime;
- 指定关系类型:
MATCH (user)-[:FOLLOWS]->(otherUser) RETURN otherUser.name;
- 指定路径长度(比如匹配1到3步的关系):
MATCH (user)-[:FOLLOWS*1..3]->(otherUser) RETURN otherUser.name;
简单来说,-->/<--和->/<-只是同一种功能的两种写法,选你看着顺眼的用就行~
内容的提问来源于stack exchange,提问作者Bala




