Ada banyak hal yang harus dilakukan untuk mengoptimalkan kueri Anda. Apa yang akan saya coba :
-
Seperti yang dikatakan Anthony Winzlet dalam komentar, gunakan tahap $match sebanyak mungkin sebagai tahap pertama. Dengan cara ini, Anda dapat mengurangi jumlah dokumen yang diteruskan ke tahap berikut, dan menggunakan indeks.
-
Dengan asumsi Anda menggunakan setidaknya 3.6 versi mongo, ubah tahapan pencarian Anda menggunakan sintaks 'let/pipeline' (lihat di sini ). Dengan cara ini, Anda dapat mengintegrasikan 'filter eksternal' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) dalam tahap $match di saluran pencarian Anda. Dengan indeks di bidang/koleksi yang tepat, Anda akan mendapatkan beberapa waktu/memori dalam tahap $lookup Anda.
-
Lakukan tahap bersantai Anda selambat mungkin, untuk membatasi jumlah dokumen yang diteruskan ke tahap berikut.
Sangat penting untuk memahami cara kerja saluran agregasi:setiap tahap menerima data, melakukan tugasnya, dan meneruskan data ke tahap berikutnya. Jadi, semakin sedikit data yang diteruskan ke pipeline, semakin cepat kueri Anda.