MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Platforma agregująca nie może używać indeksów

To spóźniona odpowiedź, ale ponieważ $group w Mongo od wersji 4.0 nadal nie będzie korzystał z indeksów, może to być pomocne dla innych.

Aby znacznie przyspieszyć agregację, wykonaj $sort przed $group .

Twoje zapytanie będzie wyglądało następująco:

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

Zakłada to indeks campaign , który powinien zostać utworzony zgodnie z Twoim pytaniem. W Mongo 4.0 utwórz indeks za pomocą db.ads_view.createIndex({campaign:1}) .

Przetestowałem to na kolekcji zawierającej ponad 5,5 mln. dokumenty. Bez $sort , agregacja nie zakończyłaby się nawet po kilku godzinach; z $sort poprzedzający $group , agregacja zajmuje kilka sekund.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak usunąć element z podwójnie zagnieżdżonej tablicy w dokumencie MongoDB.

  2. Połącz NodeJS z MongoDB Droplet

  3. MongoError:nie udało się połączyć z serwerem przy pierwszym połączeniu

  4. Jak poprawnie zwiększyć liczbę dat w mongoDB?

  5. MongoDB SSL z samopodpisanymi certyfikatami w C#