#mongoose #mongodb-query #aggregation-framework #mongodb-atlas-search
Вопрос:
У меня есть коллекция из 10 миллионов документов, по которым я выполнял запросы с помощью $search из atlas-search,
я хочу отобразить общее количество результатов, но для возврата результата требуется много времени.
Я пробовал это :-
{
'$search': {
// index: 'default',
'text': {
'query': query,
// path: {
// 'wildcard': '*'
// }
'path': ['title', 'description']
}
},
},
// {
// $count: "total"
// },
// {
// $group:{_id: null,Total:{$sum:1}}
// }
// {
// $limit: 80
// },
// {
// $facet:{"groupedByColors":[{$unwind: "$color"},{$group:{_id:"$color","count":{$sum:1}}},{$project: { "colorfield": "$_id", "count": 1 }},{$sort:{"count":-1}},{$limit: 10}]}
// }
// {
// $facet:{"groupedByColors":[{$unwind: "$color"},{$group:{_id:"$color","count":{$sum:1}}},{$project: { "colorfield": "$_id", "count": 1 }},{$limit: 10}]}
// }
]
Комментарии:
1. попробуйте выполнить подсчет с конвейером без пропусков/ограничений, а затем добавьте его:
const countPipeline = [...pipelineWithoutSkipLimit, { $count: 'count' }]; const count = db.collection.aggregate(countPipeline); const finalPipeline = [...pipelineWithoutSkipLimit, { $skip }, { $limit }];
2. Я не понял, как это работает?