Suche im angegebenen Array in MongoDB

Shihab Sikder 18 August 2022
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.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website