$inLa
$inel operador selecciona los documentos donde el valor de un campo es igual a cualquier valor en el arreglo especificada.
Compatibilidad
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.
Sintaxis
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 en la colección, lo que puede causar problemas de rendimiento. Para mejorar el rendimiento:
Limita el número de parámetros pasados a
$ina decenas de valores. El uso de cientos de parámetros puede tener un impacto negativo en el rendimiento de las query.Crea un índice en el
fieldque 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).
Consultar datos en Atlas con MongoDB
Para los datos almacenados en MongoDB Atlas, puede usar el operador MongoDB búsqueda in Operador al ejecutar $search query. Ejecutar $in después de $search es menos eficiente que ejecutar $search con el operador in Operador.
Para obtener más información sobre la versión de búsqueda de MongoDB de este Operador, consulta el in Operador en la documentación de Atlas.
Ejemplos
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" ] } ] )
Match Values
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 puede escribir la consulta utilizando el operador,$or utilice el operador $in $or en lugar del operador cuando realice verificaciones de igualdad en el mismo campo.
Empareja valores en un arreglo
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.
Usa $in con una Expresión Regular
El operador permite seleccionar documentos mediante expresiones regulares $in del /pattern/ formato. No se pueden usar expresiones $regex dentro $in de.
Esta consulta 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.