Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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, se puede utilizar el Atlas Search en el operador cuando se ejecutan $search queries. Ejecutar $in después de $search es menos eficiente que ejecutar $search con el operador in Operator.

Para obtener más información sobre la versión de Atlas Search de este operador, consulta el operador in 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