如何计算聚合中生成的分组对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算聚合中生成的分组对象?相关的知识,希望对你有一定的参考价值。
以一种聪明的方式。简单的分页任务。我有1000个对象,想将它们分组并一次发送到API 10。
db.getCollection('myCollection').aggregate([
{
"$group": {
"_id": {
"name": "$name",
},
"count": {
"$sum": 1
},
"surnames": {
"$addToSet": "$surname"
},
"objects": {
"$push": "$$ROOT"
},
}
},
{$limit:10},
{$skip:300}
], { allowDiskUse: true }
)
这将从300开始为我提供10个对象。凉。如何获得分组对象的总数?
[$count阶段不允许我保留分组结果
执行此技巧:
{$group: {_id: null, $totalCount:{$sum:1}, $results: { "$push": "$$ROOT"}}
然后取消分组将破坏我的极限,并且看起来不是很聪明。
并且,当然,不能再进行最后一次$ count的无限制的另一种聚合。因为速度。
我很乐意提供任何建议。
答案
首先,我认为您需要切换$limit
和$skip
平台的位置。
由于按name
进行分组,因此可以在该字段上使用Mongo的distinct并检查数组的length
,如下所示:
let names = await db.collection.distinct("name");
let totalLength = names.length - 300;
以上是关于如何计算聚合中生成的分组对象?的主要内容,如果未能解决你的问题,请参考以下文章
Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法