Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

$match (agregação)

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Otimização de pipeline
  • Restrições
  • Filtrar dados no Atlas usando o Atlas Search
  • Exemplos
  • Correspondência de qualidade
  • Fazer uma contagem
  • Informações adicionais
$match

Filtra os documentos para passar apenas aqueles que correspondem às condições especificadas para a próxima etapa do pipeline.

Você pode utilizar o $match para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

O estágio $match tem o seguinte formato de protótipo:

{ $match: { <query> } }

$match pega um documento que especifica as condições da query. A sintaxe de consulta é idêntica à sintaxe de consulta da operação de leitura ; ou seja, $match não aceita expressões de aggregation brutas. Em vez disso, use uma $expr expressão query para incluir a expressão aggregation em $match.

Para dados armazenados no MongoDB Atlas, você pode usar a opção filter do operador composto do Atlas Search para corresponder ou filtrar documentos ao executar queries $search . Executar $match após $search tem menos desempenho do que executar $search com a opção de operador composto filter .

Para saber mais sobre a opção filter , consulte composto na documentação do Atlas.

Os exemplos utilizam uma collection chamada articles com os seguintes documentos:

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b257"), "author" : "ahn", "score" : 60, "views" : 1000 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b258"), "author" : "li", "score" : 55, "views" : 5000 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b259"), "author" : "annT", "score" : 60, "views" : 50 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25a"), "author" : "li", "score" : 94, "views" : 999 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25b"), "author" : "ty", "score" : 95, "views" : 1000 }

A operação a seguir usa $match para realizar uma correspondência de igualdade simples:

db.articles.aggregate(
[ { $match : { author : "dave" } } ]
);

$match seleciona os documentos onde o campo author é igual a dave, e a aggregation retorna o seguinte:

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }

O exemplo a seguir seleciona documentos a serem processados usando o operador de pipeline $match e, em seguida, encaminha os resultados para o operador de pipeline $group para calcular a contagem dos documentos:

db.articles.aggregate( [
{ $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );

No aggregation pipeline, $match seleciona os documentos em que score é maior que 70 e menor que 90 ou em que views é maior ou igual que 1000. Esses documentos são então encaminhados para $group para a realização da contagem. A aggregation retorna o seguinte:

{ "_id" : null, "count" : 5 }

Consulte as páginas a seguir para obter mais informações e casos de uso sobre aggregation.

← $lookup (agregação)