Suche im angegebenen Array in MongoDB

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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