Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$match (estágio de agregação )

$match

Filtra documentos com base em um predicado de consulta especificado. Os documentos correspondentes são passados para a próxima etapa do pipeline.

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

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
  • 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

{ $match: { <query predicate> } }

A sintaxe do predicado de query $match é idêntica à sintaxe usada no argumento de query de um comando find().

Para incluir expressões em um predicado de query, use o operador $expr.

Um estágio $match filtra um documento dos resultados do pipeline se uma das seguintes condições se aplicar:

  • O predicado de query $match retorna um valor 0, null ou false nesse documento.

  • O predicado de query $match utiliza um campo ausente desse documento.

  • Você não pode usar $where em um estágio $match .

  • Você não pode usar $near ou $nearSphere em um estágio $match. Como alternativa, você pode:

  • To use $text in a $match stage, the $match stage has to be the first stage of the pipeline.

    As visualizações não suportam $text.

    Observação

    $text provides text query capabilities for self-managed (non-Atlas) deployments. For data hosted on MongoDB Atlas, MongoDB offers an improved full-text query solution, Atlas Search.

For data stored in MongoDB Atlas, you can use the Atlas Search compound Operator operator filter option to match or filter documents when running $search queries. Running $match after $search is less performant than running $search with the compound Operator operator filter option.

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

Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar este conjunto de dados em sua implantação do MongoDB autogerenciado, consulte Carregar o conjunto de dados de amostra. Se você fez alguma modificação nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

The following operation uses $match to perform an equality match on the rated field. The runtime filter limits the result to a small, representative set:

db.movies.aggregate(
[ { $match : { rated : "TV-PG", runtime : { $gt: 1000 } } } ]
)

The $match selects the documents where the rated field equals "TV-PG" and runtime is greater than 1000.

The following example selects documents to process using the $match pipeline operator and then pipes the results to the $group pipeline operator to compute a count of the documents:

db.movies.aggregate( [
{ $match: { $or: [
{ runtime: { $gt: 1000 } },
{ year: { $lt: 1910 } }
] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] )
[ { _id: null, count: 6 } ]

In the aggregation pipeline, $match selects the documents where either the runtime is greater than 1000 or the year is earlier than 1910. These documents are then sent to the $group to perform a count.

Para filtrar document com base em elementos em um campo de array, use o operador $elemMatch no predicado de query do estágio $match:

db.aggregate( [
{
$documents: [
{ student_id: 1, scores: [ 0.75, 0.65, 0.73 ] },
{ student_id: 2, scores: [ 0.9, 0.88, 0.98 ] },
{ student_id: 3, scores: [ 0.9, 0.84, 0.93 ] }
]
}, {
$match: {
scores: { $elemMatch: { $gte: 0.9 } }
}
}
] )
[
{ student_id: 2, scores: [ 0.9, 0.88, 0.98 ] },
{ student_id: 3, scores: [ 0.9, 0.84, 0.93 ] }
]

Consulte os Tutoriais do pipeline de agregação completo para obter mais informações e casos de uso sobre agregação.