Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$in (operador de predicado de query)

$in

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

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.

El operador $in tiene la siguiente forma:

{ 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 field tiene un arreglo, el $in operador selecciona los documentos cuyo field tiene un arreglo que contiene al menos un elemento que coincide con un valor del arreglo especificado. Por ejemplo, <value1>, <value2>, y así sucesivamente.

$in compara cada parámetro con cada documento de la colección, lo que puede causar problemas de rendimiento. Para mejorar el rendimiento, crea un índice en el field que deseas query. Un índice permite a MongoDB crear límites para cada elemento $in y buscar de manera más eficiente.

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.

Para crear la colección inventory utilizada en los ejemplos, ejecuta:

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" ] }
] )

Esta query selecciona documentos en la colección inventory donde el valor del campo quantity es 5 o 15:

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

La salida:

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

Aunque se puede guardar la query utilizando el operador $or, se debe utilizar el operador $in en lugar del operador $or cuando se realicen comprobaciones de igualdad en el mismo campo.

La siguiente operación updateMany() establece el campo exclude en 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 seleccionar documentos usando expresiones regulares del tipo /pattern/. No puedes usar expresiones $regex dentro de $in.

Esta query selecciona documentos en la colección inventory donde el campo tags comienza con be o st:

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

La query seleccionará todos los documentos en la colección inventory donde el campo tags tenga una string que comience con be o st, o un arreglo con al menos un elemento que comience con be o st.

Volver

$gte

En esta página