Gremlin遍历如何按深度优先顺序返回关联指定product的节点
你的需求是实现按id升序的深度优先遍历,同时收集所有关联id=13商品的person节点,原有查询没有指定子节点排序规则,所以输出顺序不符合预期。
正确的Gremlin查询语句
g.V(2). repeat(out('related').order().by(id).simplePath()). emit(out('chose').hasId(13)). dedup()
语句说明
- 从指定起点
V(2)开始遍历,避免全图扫描 - 每次扩展子节点时,先通过
order().by(id)按节点id升序排序,保证每层子节点的处理顺序符合要求 - 用
emit()筛选所有存在指向id=13的chose边的person节点,遍历过程中符合条件的节点会按遍历顺序输出 simplePath()避免出现环路,dedup()防止同一节点被多条路径命中重复输出
输出结果
执行上述语句后返回顺序完全符合预期:
==>v[1] ==>v[8] ==>v[9] ==>v[3] ==>v[11] ==>v[12]
如果只需要返回节点id,在语句末尾加上.id()即可,返回结果为:
==>1 ==>8 ==>9 ==>3 ==>11 ==>12
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

