Câu trả lời được chấp nhận hiện tại KHÔNG đảm bảo khớp chính xác trên mảng của bạn, chỉ là kích thước giống hệt nhau và mảng chia sẻ ít nhất một mục với mảng truy vấn.
Ví dụ:truy vấn
db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] } });
vẫn sẽ trả lại kaushik cho người dùng trong trường hợp đó.
Những gì bạn cần làm để có một kết hợp chính xác là kết hợp $size
với $all
, như vậy:
db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] } });
Nhưng hãy lưu ý rằng đây có thể là một hoạt động rất tốn kém, tùy thuộc vào số lượng và cấu trúc dữ liệu của bạn. để bạn có thể dựa vào thứ tự tĩnh khi truy vấn.