$in (agregação)
Nesta página
Definição
$in
Retorna um booleano indicando se um valor especificado está em uma matriz.
Observação
$in
tem a seguinte sintaxe de expressão do operador:{ $in: [ <expression>, <array expression> ] } OperandoDescrição<expression>
Qualquer expressão válida expressão.
<array expression>
Qualquer expressão válida que resolva para uma array.
Ao contrário do operador de query
$in
, o operador$in
de agregação não permite correspondência por expressões regulares.ExemploResultados{ $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
Comportamento
$in
falha com um erro em um dos seguintes casos: se a expressão $in não receber exatamente dois argumentos ou se o segundo argumento não for resolvido para uma array.
Exemplo
Uma coleção chamada fruit
possui os seguintes 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" ] }
A seguinte operação de agregação analisa a array in_stock
em cada documento e determina se a string bananas
está presente.
db.fruit.aggregate([ { $project: { "store location" : "$location", "has bananas" : { $in: [ "bananas", "$in_stock" ] } } } ])
A operação retorna os seguintes 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 }