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.