Jawaban yang diterima saat ini TIDAK memastikan kecocokan yang tepat pada larik Anda, hanya saja ukurannya identik dan larik tersebut berbagi setidaknya satu item dengan larik kueri.
Misalnya, kueri
db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] } });
masih akan mengembalikan kaushik pengguna dalam kasus itu.
Yang perlu Anda lakukan untuk mendapatkan pencocokan tepat adalah menggabungkan $size
dengan $all
, seperti ini:
db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] } });
Namun perlu diketahui bahwa ini bisa menjadi operasi yang sangat mahal, tergantung pada jumlah dan struktur data Anda. Karena MongoDB menjaga agar urutan array yang disisipkan tetap stabil, Anda mungkin lebih baik dengan memastikan array berada dalam urutan yang diurutkan saat memasukkan ke DB, sehingga Anda dapat mengandalkan urutan statis saat membuat kueri.