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" .