Obecnie zaakceptowana odpowiedź NIE gwarantuje dokładnego dopasowania w Twojej tablicy, wystarczy tylko, że rozmiar jest identyczny i że tablica współdzieli co najmniej jeden element z tablicą zapytania.
Na przykład zapytanie
db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] } });
w takim przypadku nadal zwróci użytkownika kaushik.
Aby uzyskać dokładne dopasowanie, musisz połączyć $size
z $all
, jak tak:
db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] } });
Należy jednak pamiętać, że może to być bardzo kosztowna operacja, w zależności od ilości i struktury danych. Ponieważ MongoDB utrzymuje stabilną kolejność wstawianych tablic, może lepiej będzie zapewnić uporządkowanie tablic podczas wstawiania do bazy danych. dzięki czemu możesz polegać na statycznej kolejności podczas zapytań.