如何将起始顶点映射到所有可达顶点?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'):定位到起始节点node1project('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
相关产品推荐
相关产品推荐

