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

mongodb - $lookup pipeline menggunakan COLLSCAN alih-alih indeks

Pemindaian koleksi dalam output penjelasan Anda mengacu pada map_levels koleksi, seperti yang tercantum dalam queryPlanner.namespace nilai. $lookup tahap menggabungkan data dari koleksi lain ke dalam pipa saat ini. Karena Anda belum menentukan tahapan kueri apa pun sebelum $lookup , map_levels koleksi akan diulang menggunakan pemindaian koleksi. Jika seluruh koleksi dimuat tanpa kriteria pemfilteran atau pengurutan apa pun, pemindaian koleksi memiliki overhead yang lebih sedikit daripada mengulangi indeks dan mengambil dokumen.

Anda dapat menghindari pemindaian koleksi saat ini dengan menambahkan $match tahap sebelum $lookup . Anda (dengan asumsi Anda tidak ingin memproses map_levels lengkap koleksi).

Sayangnya permintaan penjelasan output tidak (seperti pada MongoDB 4.0) menunjukkan penggunaan indeks untuk $lookup tahapan. Solusi untuk ini akan berjalan jelaskan menggunakan pipeline pencarian Anda sebagai kueri agregasi tingkat atas.

Ada masalah yang relevan untuk ditonton/di-upvote di pelacak Masalah MongoDB:SERVER-22622:Tingkatkan $lookup jelaskan untuk menunjukkan rencana kueri pada koleksi "dari" .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $stdDevPop

  2. nodejs - asli mongodb temukan semua dokumen

  3. Bagaimana cara mengonfigurasi indeks mongoDB di Django-nonrel tanpa menggunakan Model?

  4. Seberapa amankah mode aman MongoDB pada sisipan?

  5. OData - Indeks aneh dengan MongoDB [Mongoose:Cast Error]