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í.
