如何在 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 }
)
假设我有一个这样的边缘文档:
[{
"_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 }
)