mongodb - 对最后/第一个 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'},
} },
],
}
}
推荐阅读
- docker - docker-compose 无法加载 run.sh
- javascript - Object.defineProperty 在我的 react.js 应用程序中调用非对象
- javascript - Firestore 数据模型不一致
- python - Django 超级用户无权删除模型
- c# - 在内存中存储敏感的配置数据
- c# - 不验证隐藏字段 (jQuery)
- android - 在我的自定义键盘建议中添加英语和古吉拉特语的预测词
- mysql - 在 Azure 应用服务中连接到 In App MySQL 时出现套接字错误
- python - 尝试在 Selenium 中使用 xpath 定位输入字段时出现 NoSuchElementException
- excel - 使用 Excel、VBA 和 .ppk 密钥文件连接到 SFTP 目录?