MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Агрегираната рамка не може да използва индекси

Това е късен отговор, но от $group в Mongo от версия 4.0 все още няма да използва индекси, може да е полезно за други.

За да ускорите значително агрегирането си, извършете $sort преди $group .

Така че вашата заявка ще бъде:

db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});

Това предполага индекс на campaign , който трябваше да бъде създаден според вашия въпрос. В Mongo 4.0 създайте индекса с db.ads_view.createIndex({campaign:1}) .

Тествах това в колекция, съдържаща 5,5+ милиона. документи. Без $sort , агрегацията не би приключила дори след няколко часа; с $sort предхождащ $group , агрегирането отнема няколко секунди.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Монго групиране и натискане:бутане на всички полета

  2. Как MongoDB се различава от SQL база данни

  3. Пролетна сесия с MongoDB

  4. Работа с грешки при валидиране на Mongoose – къде и как?

  5. MongoDB:агрегирано поле за добавяне на $project със статична стойност