如何在 aragodb 上进行聚合

how to bucket aggregate on arangodb

假设我有一个这样的边缘文档:

[{
    "_from": "mobiles/12345",
    "_to": "mobiles/54321",
    "type": "call",
},
{
    "_from": "mobiles/54321",
    "_to": "mobiles/32145",
    "type": "sms",
},
{
    "_from": "mobiles/54321",
    "_to": "mobiles/12345",
    "type": "call",
}]

我需要在 54321 上查询时得到这样的列表:

{"54321":3, "12345":2,"32145":1}

我试过了,但这不是我要找的:

for v,e,p in any "mobiles/54321" docs
COLLECT from = e._from , to = e._to with count into len 

return {from, to, len}

我在 Elasticsearch 中使用 aggs 查询非常容易地做到这一点

您可以“展开”_from 和 _to 属性,然后按它们的文档键并集而不是每个唯一组合进行分组,计算每个键出现的频率,并 return 每个存储桶的对象具有动态属性键。外部 MERGE() 创建将键映射到计数的最终对象:

RETURN MERGE(
  FOR v,e IN ANY "mobiles/54321" docs
    FOR id IN [e._from, e._to]
      COLLECT key = PARSE_IDENTIFIER(id).key WITH COUNT INTO len
      RETURN { [key]: len }
)