Умным способом. Простое задание на нумерацию страниц. У меня есть 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 }
)
Это даст мне 10 объектов, начиная с 300-го. Круто. Как узнать общее количество сгруппированных объектов?
$ count этап не позволит мне сохранить мои сгруппированные результаты
Выполнение этого трюка:
{$group: {_id: null, $totalCount:{$sum:1}, $results: { "$push": "$$ROOT"}}
и тогда разгруппировка разрушит мои пределы и выглядит не очень умно.
И, конечно, выполнение другой агрегации с $ count в качестве последнего этапа и без ограничений не является вариантом. Из-за скорости.
Буду рад любому совету.