Karena Anda sudah membuat indeks gabungan untuk (a, b)
, semua ekspresi klausa Anda didukung oleh indeks -> mongo akan menggunakan pemindaian indeks alih-alih pemindaian koleksi. Mungkin cukup cepat.
Referensi:$atau Klausa dan Indeks
Sekarang tentang pertanyaan Anda
$in
mencocokkan seluruh bidang. Jika Anda ingin mencocokkan (a,b)
maka jelas (a,b)
harus menjadi objek yang disematkan untuk mencari dengan $in
.
Tidak yakin apakah membuat objek yang disematkan sesuai dengan skema/persyaratan Anda saat ini. Tetapi jika demikian, $in
telah dikenal untuk kinerja yang lebih baik dibandingkan dengan $or
:
Dalam hal ini, jika Anda memiliki objek yang disematkan seperti:{e: {a: 'x', b: 'y'}}
lalu db.collections.createIndex({e: 1})
dipasangkan dengan $in
akan mempercepat