MATCH语句

版本2.6.0 自己的测试环境。

问题:
1、 点v1 - v5 是顺序的,无环。现在想用match查询,语句如下,这个时候加入不存在的v6点,整个结果一条数据都没有,为什么不是返回存在的数据呢,比如返回v4、5、1 。
match (v1)–>(v2)–>(v3)–>(v4)–>(v5)–>(v6) where id(v4) == “table4” return v4,v5,v1;

2、 现在有一个场景,查询某个点的上下游点边信息,期望是单向的结果,顺序的。 比如 v1 到 v5,指定v3查询上下游2层深度,就是1 2 4 5, 如果用go查询,由于是walk,会出现重复的数据,虽然 4 5是顺序的,但是 2 3 是入边,所以还需要手动导致他们的src和dst。 但是用match的话又会出现问题1的问题。 有没有好的方式解决呢。 其实就是想 基于 v3 自定义深度,比如2, 获取 v1、v2 、v3、v4、v5这样的数据,而且是单向顺序的。

  1. 因为您的条件是符合 (v1)–>(v2)–>(v3)–>(v4)–>(v5)–>(v6) 这个模式的,如果你想可选的增加 v6 应该用 optional match(可惜这个3.0才支持,现在的master上支持,你可以试试)
match (v1)–>(v2)–>(v3)–>(v4)–>(v5) where id(v4) == “table4” 
optional match (v1)–>(v2)–>(v3)–>(v4)–>(v5)–>(v6) 
return v4,v5,v1;
  1. 可选 match 的表达力会增加,如上,用 optional match,现在的master已经合并了,可以等年后发布正式版再上生产。
3 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。