Buscar en el array especificado en MongoDB

Shihab Sikder 18 agosto 2022
Buscar en el array especificado en MongoDB

El operador $in busca dentro del array que ha proporcionado. Por ejemplo, si proporciona un array y desea buscar uno o más elementos coincidentes en una colección MongoDB, puede usar $in.

Use el operador $in para buscar en el array especificada en MongoDB

El operador $in encuentra documentos donde el valor de un campo es igual a cualquier valor del array proporcionado. Utilice el siguiente prototipo para especificar una expresión $in.

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

Por ejemplo, supongamos que tiene la siguiente colección.

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

Ahora, desea ver los documentos para _id = 2,3,4. Entonces, el comando será como el siguiente.

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

O bien, también puede enviar un array como parámetro. Cuando estés desarrollando aplicaciones o sitios web, será útil.

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

Al usar las promises de JavaScript, este enfoque es útil.

Para evitar errores, debe tener en cuenta el ObjectId. _id es proporcionado por defecto por MongoDB, y el tipo de _id es ObjectId.

Entonces, al pasar la matriz en el parámetro de $in, es mejor convertir cada número entero id a ObjectId como se muestra a continuación.

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

Este enfoque es más preciso porque proporciona el tipo de datos exacto del _id a través del parámetro. $in también se puede utilizar en las operaciones updateMany, updateOne, deleteOne, deleteMany.

Para saber más sobre el operador $in, visita la página oficial aquí.

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