Docs Menu
Docs Home
/ /
Consulta de comparación

$in

$in

El operador $in selecciona los documentos donde el valor de un campo es igual a cualquier valor en el arreglo especificado.

Puedes usar $in para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

Para especificar una expresión $in, utiliza el siguiente prototipo:

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

Para la comparación de diferentes valores de tipo BSON, consulta el orden de comparación especificado de BSON.

Si el field contiene un arreglo, entonces el operador $in selecciona los documentos cuyo field contiene un arreglo que tiene al menos un elemento que coincide con un valor en el arreglo especificado (por ejemplo, <value1>, <value2>, etc.).

El operador $in compara cada parámetro con cada documento en la colección, lo que puede provocar problemas de rendimiento. Para mejorar el rendimiento:

  • Se recomienda que limite el número de parámetros que se pasan al
    $in Operador con decenas de valores. Usar cientos de parámetros o más puede afectar negativamente el rendimiento de la consulta.
  • Crea un índice en el field que deseas consultar.

Nota

Este documento describe el operador de la query $in. Para el operador de agregación $in, consulte $in (operador de expresión).

Para los datos almacenados en MongoDB Atlas, puede usar el operador "Buscar en Atlas" al ejecutar $search consultas. Ejecutar $in después $search de tiene menor rendimiento que ejecutar con $search el operador "In".

Para obtener más información sobre la versión Atlas Search de este operador, consulte el operador en la documentación de Atlas.

Crear la colección inventory:

db.inventory.insertMany( [
{ item: "Pens", quantity: 350, tags: [ "school", "office" ] },
{ item: "Erasers", quantity: 15, tags: [ "school", "home" ] },
{ item: "Maps", tags: [ "office", "storage" ] },
{ item: "Books", quantity: 5, tags: [ "school", "storage", "home" ] }
] )

Considera el siguiente ejemplo:

db.inventory.find( { quantity: { $in: [ 5, 15 ] } }, { _id: 0 } )

Este query selecciona todos los documentos en la colección inventory donde el valor del campo quantity es 5 o 15.

{ item: 'Erasers', quantity: 15, tags: [ 'school', 'home' ] },
{ item: 'Books', quantity: 5, tags: [ 'school', 'storage', 'home' ] }

Aunque puedes guardar esta query utilizando el operador $or, utiliza el operador $in en vez del operador $or cuando realices comprobaciones de igualdad en el mismo campo.

La siguiente updateMany() Operación establece el campo exclude a false cuando el arreglo tags tiene al menos un elemento que coincide con "home" o "school".

db.inventory.updateMany(
{ tags: { $in: [ "home", "school" ] } },
{ $set: { exclude: false } }
)

Ejemplo de salida:

{
item: 'Pens',
quantity: 350,
tags: [ 'school', 'office' ],
exclude: false
},
{
item: 'Erasers',
quantity: 15,
tags: [ 'school', 'home' ],
exclude: false
},
{
item: 'Books',
quantity: 5,
tags: [ 'school', 'storage', 'home' ],
exclude: false
}

Para obtener más ejemplos sobre la consulta de arreglos, consulte:

Para obtener ejemplos adicionales sobre query, consulta Documentos de query.

El operador $in puede especificar valores coincidentes utilizando expresiones regulares de la forma /pattern/. No puedes usar expresiones del operador $regex dentro de un $in.

Considera el siguiente ejemplo:

db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )

Este query selecciona todos los documentos en la colección inventory donde el campo tags contiene una string que comienza con be o st o un arreglo con al menos un elemento que comienza con be o st.

Tip

Volver

$gte

En esta página