在 Gremlin 中,当使用具有多个 属性 的 groupCount() 时,我如何对结果进行排序?

With Gremlin, when using a groupCount() with more than one property, how can I order the results?

g.V().as('a').
 outE().as('r').
 inV().as('b').
 select('a', 'r', 'b').
 project('source','label','target').
 by(select('a').label()).
 by(select('r').label()).
 by(select('b').label()).
 groupCount().
 order(local).by(values, desc).
 unfold()

此查询适用于任何 gremlin 数据集。

示例输出:

==>{source=Node, label=POINTS_AT, target=Node}=63
==>{source=Node, label=IS_RELATED_TO, target=Other}=14
==>{source=Other, label=POINTS_AT, target=Other}=3

我刚开始学习 Gremlin。此查询对出顶点标签、边标签和入顶点标签执行 groupCount,并按值对结果进行排序,这些值只是计数。

键是具有多个值 'source'、'label' 和 'target' 的映射条目。我想按边标签排序结果,然后按源标签排序,最后按目标标签排序。我怎样才能做到这一点?

另外,有没有比我想出的查询更好的方法来解决这个问题?

没有你的数据集,我不确定这是否正是你想要的,但这是否满足你的需要?

g.V().as('a').
 outE().as('r').
 inV().as('b').
 project('source','label','target').
 by(select('a').label()).
 by(select('r').label()).
 by(select('b').label()).
 groupCount().
 order(local).
   by(select(keys).select('source')).
   by(select(keys).select('target')).
   by(select(keys).select('label')).
 unfold()

如果需要,您可以将 desc 添加到任何 by 调制器。