You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将起始顶点映射到所有可达顶点?Gremlin查询求助

解决Gremlin查询:映射起始节点到所有可达节点

针对你的需求,以下是符合预期的Gremlin查询,能够将起始节点关联到所有它能到达的节点(包括多层级子节点):

示例查询

g.V('node1')
  .project('start', 'relates')
    .by(id()) // 若需要完整节点属性,替换为 valueMap(true)
    .by(
      repeat(out('link'))
        .emit()
        .dedup()
        .id() // 与start字段的选择保持一致,如需属性则用 valueMap(true)
        .fold()
    )

逻辑说明

  • g.V('node1'):定位到起始节点node1
  • project('start', 'relates'):构建你需要的键值对结果结构
  • by(id()):为start字段填充起始节点ID(如果需要节点完整属性,替换为valueMap(true)即可)
  • repeat(out('link')).emit():递归遍历所有通过link边向外可达的节点,emit()会返回遍历路径上的所有节点
  • dedup():对遍历到的节点去重,避免因环或多路径到达同一节点导致的重复结果
  • fold():将所有可达节点收集为一个列表,赋值给relates字段

测试验证

针对你描述的扩展场景(node3可到达node5、node6),执行该查询后会返回:

[start=node1, relates=[node2, node3, node4, node5, node6]]

内容的提问来源于stack exchange,提问作者amisium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:50:17