是否有任何聚合管道阶段可以帮助对一些结果进行分组,如下所示:
{ "_id": "some-id-1", "sum": 14.49 }
{ "_id": "some-id-2", "sum": 12.49 }
{ "_id": "some-id-3", "sum": 9.99 }
{ "_id": "some-id-4", "sum": 8.49 }
{ "_id": "some-id-5", "sum": 7.49 }
所以它只对记录#3之后的文档进行分组?例如:
{ "_id": "some-id-1", "sum": 14.49 }
{ "_id": "some-id-2", "sum": 12.49 }
{ "_id": "some-id-3", "sum": 9.99 }
{ "_id": "grouped", "sum": 15.98 } <---- partial group by
我在看$bucket
,但如果提前知道sum
,似乎会有所帮助。
这个想法是为了减少mongodb在有巨大结果集时必须返回的数据量。
最终使用$facet
:
{
$facet: {
list: [ {
$limit: 3
} ],
other: [
{ $skip: 3 },
{ $group: {
_id: 'other',
sum: {$sum: '$sum'},
} },
],
}
}