MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Kerangka kerja agregat tidak dapat menggunakan indeks

Ini adalah jawaban yang terlambat, tetapi karena $group di Mongo pada versi 4.0 masih tidak menggunakan indeks, mungkin bermanfaat bagi orang lain.

Untuk mempercepat agregasi Anda secara signifikan, lakukan $sort sebelum $group .

Jadi kueri Anda akan menjadi:

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

Ini mengasumsikan indeks pada campaign , yang seharusnya dibuat sesuai dengan pertanyaan Anda. Di Mongo 4.0, buat indeks dengan db.ads_view.createIndex({campaign:1}) .

Saya menguji ini pada koleksi yang berisi 5.5+ Mio. dokumen. Tanpa $sort , agregasi tidak akan selesai bahkan setelah beberapa jam; dengan $sort sebelumnya $group , agregasi membutuhkan waktu beberapa detik.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $sum dan $avg sub dokumen

  2. Mencatat Kueri MongoDB dengan Spring Boot

  3. MongoDB:kehabisan memori

  4. Periksa apakah upser MongoDB melakukan penyisipan atau pembaruan

  5. Otentikasi aplikasi NodeJS dan MongoDB oleh JWT