Definição
Compatibilidade
Você pode utilizar o $filter para implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem 
- MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB 
- MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB 
Sintaxe
$filter tem a seguinte sintaxe:
{     $filter:       {          input: <array>,          cond: <expression>,          as: <string>,          limit: <number expression>       } } 
| Campo | Especificação | 
|---|---|
| 
 | Uma expressão que se torna uma array. Se  Se  | 
| 
 | Uma expressão que se torna um valor booleano utilizado para determinar se um elemento deve ser incluído na array de saída. A expressão referencia cada elemento da array  | 
| 
 | Opcional. Um nome para a variável que representa cada elemento individual da array  | 
| 
 | Opcional. Uma expressão numérica que restringe o número de elementos de array correspondentes que  Se o especificado  | 
Para mais informações sobre expressões, consulte Expressões.
Comportamento
| Exemplo | Resultados | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  | 
 | 
Exemplo
Uma coleção sales possui os seguintes documentos:
{    _id: 0,    items: [      { item_id: 43, quantity: 2, price: 10 },      { item_id: 2, quantity: 1, price: 240 }    ] } {    _id: 1,    items: [      { item_id: 23, quantity: 3, price: 110 },      { item_id: 103, quantity: 4, price: 5 },      { item_id: 38, quantity: 1, price: 300 }    ] } {     _id: 2,     items: [        { item_id: 4, quantity: 1, price: 23 }     ] } 
O exemplo a seguir filtra a array items para incluir somente documentos que tenham um price maior ou igual a 100:
db.sales.aggregate([    {       $project: {          items: {             $filter: {                input: "$items",                as: "item",                cond: { $gte: [ "$$item.price", 100 ] }             }          }       }    } ]) 
A operação produz os seguintes resultados:
{    "_id" : 0,    "items" : [       { "item_id" : 2, "quantity" : 1, "price" : 240 }    ] } {    "_id" : 1,    "items" : [       { "item_id" : 23, "quantity" : 3, "price" : 110 },       { "item_id" : 38, "quantity" : 1, "price" : 300 }    ] } { "_id" : 2, "items" : [ ] }