sql >> Database >  >> NoSQL >> MongoDB

Aggregate framework kan geen indexen gebruiken

Dit is een laat antwoord, maar sinds $group in Mongo vanaf versie 4.0 zal nog steeds geen gebruik worden gemaakt van indexen, het kan nuttig zijn voor anderen.

Voer een $sort . uit om uw aggregatie aanzienlijk te versnellen voor $group .

Dus uw vraag zou worden:

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

Dit veronderstelt een index op campaign , die op basis van uw vraag had moeten zijn gemaakt. Maak in Mongo 4.0 de index met db.ads_view.createIndex({campaign:1}) .

Ik heb dit getest op een verzameling van 5,5+ Mio. documenten. Zonder $sort , de aggregatie zou zelfs na enkele uren niet zijn voltooid; met $sort voorafgaand aan $group , aggregatie duurt een paar seconden.



  1. Hoe stel ik de leestime-out in op de node redis-client?

  2. Tel velden in een MongoDB-verzameling

  3. Mongo-interface

  4. De ene publicatie verbergt geneste velden van een andere publicatie