Rechercher dans le tableau spécifié dans MongoDB

Shihab Sikder 18 aout 2022
Rechercher dans le tableau spécifié dans MongoDB

L’opérateur $in recherche dans le tableau que vous avez fourni. Par exemple, si vous donnez un tableau et que vous souhaitez rechercher un ou plusieurs éléments correspondants dans une collection MongoDB, vous pouvez utiliser $in.

Utilisez l’opérateur $in pour rechercher dans le tableau spécifié dans MongoDB

L’opérateur $in trouve les documents où la valeur d’un champ est égale à n’importe quelle valeur dans le tableau fourni. Utilisez le prototype suivant pour spécifier une expression $in.

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

Par exemple, supposons que vous ayez la collection suivante.

{
    _id:1,
    name: "John",
    age: 30
},
{
    _id:2,
    name: "Alex",
    age: 23
},
{
    _id:3,
    name: "Murphy",
    age: 25
},
{
    _id:4,
    name: "Alice",
    age: 28
},

Maintenant, vous voulez voir les documents pour _id = 2,3,4. Ainsi, la commande sera comme suit.

db.collection.find( {_id: { $in: [2, 3, 4] } } );

Ou, vous pouvez également envoyer un tableau en tant que paramètre. Lorsque vous développez des applications ou des sites Web, cela vous sera utile.

let list=[2, 3, 4]
db.collection.find( { _id:{ $in: list} } )

Tout en utilisant des promise JavaScript, cette approche est utile.

Pour éviter toute erreur, vous devez être conscient de l’ObjectId. _id est fourni par défaut par MongoDB, et le type de _id est ObjectId.

Ainsi, en passant le tableau dans le paramètre de $in, il est préférable de convertir chaque entier id en ObjectId comme suit.

{ "_id" : { $in : [ObjectId('2'),ObjectId('3'),ObjectId('4')] } }

Cette approche est plus précise car vous fournissez le type de données exact du _id via le paramètre. $in peut également être utilisé dans les opérations updateMany, updateOne, deleteOne, deleteMany.

Pour en savoir plus sur l’opérateur $in, rendez-vous sur la page officielle ici.

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