You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动