通过对最后/第一个X文档进行分组来进行部分分组的最佳方式



是否有任何聚合管道阶段可以帮助对一些结果进行分组,如下所示:

{ "_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'},
} },
],
}
}

最新更新