$inEl operador
$inselecciona los documentos donde el valor de un campo es igual a cualquier valor en la matriz 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 el siguiente formato:
{ 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 array, el operador $in selecciona los documentos cuyo field tiene un array que contiene al menos un elemento que coincide con un valor en el array especificado. Por ejemplo, <value1>, <value2>, etc.
$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 elemento field que deseas consultar. Un índice permite a MongoDB crear límites para cada elemento $in y realizar búsquedas más eficientes.
Nota
Este documento describe el $in operador de consulta. Para el $in operador de agregación, consulte $in (operador de expresión).
Consultar datos en Atlas con MongoDB
Para los datos almacenados en MongoDB Atlas, puede usar el operador de búsqueda de MongoDB al ejecutar consultas.$search Ejecutar $in después $search de tiene un rendimiento inferior al de ejecutar $search con el operador in.
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
Los ejemplos de esta página utilizan datos del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.
Match Values
Esta query selecciona documentos en la colección movies donde el valor del campo rated es "G" o "TV-G":
db.movies.find( { rated: { $in: ["G", "TV-G"] } }, { _id: 0, title: 1 } )
[ { title: 'The Great Train Robbery' }, { title: 'A Corner in Wheat' }, { title: 'From Hand to Mouth' }, { title: 'One Week' }, { title: 'The Devil to Pay!' }, { title: 'Footlight Parade' }, { title: 'Gold Diggers of 1935' }, { title: 'Naughty Marietta' }, { title: 'Modern Times' }, { title: 'Gone with the Wind' }, { title: 'Fantasia' }, { title: 'The Man Who Came to Dinner' }, { title: 'National Velvet' }, { title: 'Alice in Wonderland' }, { title: 'The Member of the Wedding' }, { title: 'Seven Brides for Seven Brothers' }, { title: 'Around the World in Eighty Days' }, { title: 'The King and I' }, { title: 'A King in New York' }, { title: 'Ben-Hur' } ]
Aunque puedes escribir la consulta usando el operador, usa $or el $in operador en lugar del operador cuando realices comprobaciones de igualdad en el mismo $or campo.
Empareja valores en un arreglo
La siguiente operación updateMany() establece el campo familyFriendly en true cuando el arreglo rated tiene al menos un elemento que coincide con "G" o "TV-G":
db.movies.updateMany( { rated: { $in: ["G", "TV-G"] } }, { $set: { familyFriendly: true } } )
{ acknowledged: true, insertedId: null, matchedCount: 536, modifiedCount: 536, upsertedCount: 0 }
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 $in puede seleccionar documentos utilizando expresiones regulares de la forma /pattern/.
Esta consulta selecciona documentos en la colección movies donde el campo plot comienza con Alien o contiene sci-fi:
db.movies.find( { plot: { $in: [ /^Alien/ , /sci-fi/ ] } }, { _id: 0, title: 1, plot: 1 } )
[ { plot: 'Aliens come to Earth seeking scientists to help them in their war.', title: 'This Island Earth' }, { plot: 'Censored by the Polish authorities, this film was reedited and new footage added. It begins with a sci-fi motif: abstract images and electronic music take the viewer from ruins of Lebanon ...', title: 'Rece do gèry' }, { plot: 'An idyllic sci-fi future has one major drawback: life must end at 30.', title: "Logan's Run" }, { plot: "Four horror/sci-fi segments directed by four famous directors which are their own versions of classic stories from Rod Serling's landmark television series.", title: 'Twilight Zone: The Movie' }, { plot: 'Aliens who look like clowns come from outer space and terrorize a small town.', title: 'Killer Klowns from Outer Space' }, ... ]