Star

GO N STEPS疑问

在官方文档中, 说明N TEPS是N跳, 但是却没有说明具体是指第N跳, 还是从1-N的所有跳?

所以我参考官方文档写了下面这个语句:
GO 2 STEPS from 301 OVER friend BIDIRECT YIELD friend._src, friend._dst, friend._type;

然后发现返回的结果中, 包含了第1跳和第二跳的所有边(包含正反向), 我理解是根据返回的字段, 语句内部做了去重处理, 由于同时包含了_src, _dst, _type 三个参数, 所以去重的结果就是把所有的边都包含进去了

所以, 有两个问题比较疑惑, 希望官方能够澄清:

  1. edge 的隐含属性 _type 其实就是 edgeId, 如果这个值是正的,表示是正向, 如果是负的则表示反向, 这样理解正确吗?

  2. 如果同时指定 _src, _dst, _type 三个参数, 是不是就可以返回所有的边了?

上述语句是执行在 1.0.rc4 版本上

期待官方回复, 谢谢!

在官方文档中, 说明N TEPS是N跳, 但是却没有说明具体是指第N跳, 还是从1-N的所有跳?
只有N跳的数据

edge 的隐含属性 _type 其实就是 edgeId, 如果这个值是正的,表示是正向, 如果是负的则表示反向, 这样理解正确吗?
_type 是edgeType,正向的是表示出边,反向表示入边

如果同时指定 _src, _dst, _type 三个参数, 是不是就可以返回所有的边了?
_src, _dst, _type这三个参数是边上的默认属性。只有符合条件的边返回。

你确认只有N跳吗? 不是1-N跳的数据? 我专门通过Studio试了下, 发现GO 2 STEPS 是把所有的边都返回了

只返回第N步数据,你可以检查一下第N步的边

那说明第N步查询到所有边。

这与我看到的结果不符, 假设有如下边
101->201->301
按照上述语句, “GO 2 STEPS from 301 OVER friend BIDIRECT YIELD friend._src, friend._dst, friend._type;” 会返回:
src, dst, type
101, 201, -27
201, 301, -27

其中 201 -> 301 其实是N=1时的结果, 但是 N=2时也返回了

正向的第一跳是101->201, 第二跳201->301, 返回201->301
返回的第一跳是301->201, 第二跳是201->101 返回201->101

结果应该是
201->301
201->101

你说得对, 确实返回的结果是
201, 301, 27
201, 101, -27

但是我理解你说的“只返回第N跳的数据”是指只返回 “201->101”, 而不会返回 201->301

你查询语句不是带了BIDIRECT 吗?
这个表示查找正向边和反向边。
你把BIDIRECT 去了,只查找正向边,结果就是201, 301, 27。

再次使用下述模型, 以4001为目标,做了验证:
1001 -> 2001 -> 3001 -> 4001 -> 5001 -> 6001 -> 7001

go 3 steps from 4001 over friend BIDIRECT yield friend._src as src, friend._dst as dst, friend._type as type;
返回结果如下:

结论是: 当指定返回_src, _dst, _type 时, GO N STEPS 会返回 1-N之间的, 以4001为中心的所有正反边

双向查询时,本次查询到的边的src和dst都会作为下一次查询的起点

结果没有问题的,你可以排列组合下

RC4的显示结果有点迷, 可以用最新的版本试一下, 结果会清晰的多.
image

浙ICP备20010487号