MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB Find Exact Array Match, aber die Reihenfolge spielt keine Rolle

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.