Definición
$inDevuelve un valor booleano que indica si un valor especificado está en un arreglo.
Nota
$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
Una colección llamada fruit tiene los siguientes documentos:
{ "_id" : 1, "location" : "24th Street", "in_stock" : [ "apples", "oranges", "bananas" ] } { "_id" : 2, "location" : "36th Street", "in_stock" : [ "bananas", "pears", "grapes" ] } { "_id" : 3, "location" : "82nd Street", "in_stock" : [ "cantaloupes", "watermelons", "apples" ] }
La siguiente operación de agregación analiza el arreglo in_stock de cada documento y determina si el string bananas está presente.
db.fruit.aggregate([ { $project: { "store location" : "$location", "has bananas" : { $in: [ "bananas", "$in_stock" ] } } } ])
La operación devuelve los siguientes resultados:
{ "_id" : 1, "store location" : "24th Street", "has bananas" : true } { "_id" : 2, "store location" : "36th Street", "has bananas" : true } { "_id" : 3, "store location" : "82nd Street", "has bananas" : false }