Definición
$inDevuelve un valor booleano que indica si un valor especificado está en un arreglo.
Nota
Este documento describe el operador de agregación
$in. Para el$inoperador del query, consulte $in (operador de predicado de query).$intiene la siguiente sintaxis de expresión de operador:{ $in: [ <expression>, <array expression> ] } OperandoDescripción<expression>Cualquier expresión válida.
<array expression>Cualquier expresión válida que se evalúa en un arreglo.
A diferencia del operador del query
$in, el operador de agregación$inno admite la coincidencia por expresiones regulares.EjemploResultados{ $in: [ 2, [ 1, 2, 3 ] ] }true{ $in: [ "abc", [ "xyz", "abc" ] ] }true{ $in: [ "xy", [ "xyz", "abc" ] ] }false{ $in: [ [ "a" ], [ "a" ] ] }false{ $in: [ [ "a" ], [ [ "a" ] ] ] }true{ $in: [ /^a/, [ "a" ] ] }false{ $in: [ /^a/, [ /^a/ ] ] }true
Comportamiento
$in genera un error en cualquiera de los siguientes casos: si la expresión $in no recibe exactamente dos argumentos o si el segundo argumento no se resuelve en un arreglo.
Ejemplo
El siguiente ejemplo utiliza la colección movies del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación, consulte Cargar el conjunto de datos de muestra.
Esta operación de agregación examina el array genres en cada película y determina si la cadena "Drama" está presente:
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { _id: 0, title: 1, hasDrama: { $in: [ "Drama", "$genres" ] } } } ] )
[ { title: 'Centennial', hasDrama: true }, { title: 'Baseball', hasDrama: false } ]