Die derzeit akzeptierte Antwort stellt KEINE exakte Übereinstimmung mit Ihrem Array sicher, nur dass die Größe identisch ist und dass das Array mindestens ein Element mit dem Abfrage-Array teilt.
Zum Beispiel die Abfrage
db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] } });
würde in diesem Fall immer noch den Benutzer kaushik zurückgeben.
Für eine exakte Übereinstimmung müssen Sie $size
kombinieren mit $all
, etwa so:
db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] } });
Beachten Sie jedoch, dass dies abhängig von Ihrer Datenmenge und -struktur ein sehr teurer Vorgang sein kann. Da MongoDB die Reihenfolge der eingefügten Arrays stabil hält, ist es möglicherweise besser, wenn Sie sicherstellen, dass die Arrays beim Einfügen in die DB in einer sortierten Reihenfolge vorliegen. damit Sie sich beim Abfragen auf eine statische Reihenfolge verlassen können.