Suche im angegebenen Array in MongoDB
Der Operator $in sucht innerhalb des von Ihnen angegebenen Arrays. Wenn Sie beispielsweise ein Array angeben und ein oder mehrere übereinstimmende Elemente in einer MongoDB-Sammlung suchen möchten, können Sie $in verwenden.
Verwenden Sie den Operator $in, um im angegebenen Array in MongoDB zu suchen
Der Operator $in findet Dokumente, bei denen der Wert eines Felds einem beliebigen Wert im bereitgestellten Array entspricht. Verwenden Sie den folgenden Prototyp, um einen $in-Ausdruck anzugeben.
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
Angenommen, Sie haben die folgende Sammlung.
{
_id:1,
name: "John",
age: 30
},
{
_id:2,
name: "Alex",
age: 23
},
{
_id:3,
name: "Murphy",
age: 25
},
{
_id:4,
name: "Alice",
age: 28
},
Nun möchten Sie die Dokumente für _id = 2,3,4 sehen. Der Befehl sieht also wie folgt aus.
db.collection.find( {_id: { $in: [2, 3, 4] } } );
Oder Sie können auch ein Array als Parameter senden. Wenn Sie Apps oder Websites entwickeln, ist dies nützlich.
let list=[2, 3, 4]
db.collection.find( { _id:{ $in: list} } )
Bei der Verwendung von JavaScript-promises ist dieser Ansatz nützlich.
Um Fehler zu vermeiden, sollten Sie die ObjectId kennen. _id wird standardmäßig von MongoDB bereitgestellt, und der Typ von _id ist ObjectId.
Während Sie also das Array im Parameter von $in übergeben, ist es besser, jede Ganzzahl id wie folgt in ObjectId umzuwandeln.
{ "_id" : { $in : [ObjectId('2'),ObjectId('3'),ObjectId('4')] } }
Dieser Ansatz ist genauer, da Sie den genauen Datentyp der _id über den Parameter angeben. $in kann auch in updateMany-, updateOne-, deleteOne-, deleteMany-Operationen verwendet werden.
Um mehr über den Operator $in zu erfahren, besuchen Sie die offizielle Seite hier.
