Gremlin技术问题:如何区分获取顶点列表的出入边
你可以用Gremlin的group()或者project()步骤来解决这个问题,把每个顶点对应的边单独归类,这样就能清楚区分每条边所属的顶点了:
方法一:用group()生成顶点ID到边列表的映射
直接对目标顶点分组,以顶点ID为键,对应的符合条件的边为值:
g.V('2896897c-7346-47c0-b3be-ab808a7ca367', '89ed1880-1351-4de0-9c6f-b41c78a770d3') .group() .by(id()) .by(bothE('relation1','relation2').has('isActive', true).fold())
查询返回的结构类似{顶点ID1: [边1, 边2], 顶点ID2: [边3, 边4]},能直接对应每个顶点的关联边。
方法二:用project()生成结构化的顶点-边集合
如果想要更清晰的字段命名,用project()定义返回结构,每个结果包含明确的顶点ID和边列表字段:
g.V('2896897c-7346-47c0-b3be-ab808a7ca367', '89ed1880-1351-4de0-9c6f-b41c78a770d3') .project('vertexId', 'relatedEdges') .by(id()) .by(bothE('relation1','relation2').has('isActive', true).fold())
返回结果会是结构化的列表:
[ {"vertexId": "2896897c-7346-47c0-b3be-ab808a7ca367", "relatedEdges": [边对象...]}, {"vertexId": "89ed1880-1351-4de0-9c6f-b41c78a770d3", "relatedEdges": [边对象...]} ]
两种方法里的fold()步骤负责把当前顶点的所有符合条件的边收集成一个列表,避免边被单独展开导致归属混淆。
内容的提问来源于stack exchange,提问作者S7H
相关产品推荐
相关产品推荐

