Как получить общее количество результатов запроса для большого набора данных?

#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. Я не понял, как это работает?