Definição
Retorna o número de documentos em uma janela específica.
Observação
Desambiguação
Esta página descreve $count quando usado como uma função de janela.
Você também pode usar $count nestes outros contextos:
$count (accumulator), que retorna o número de documentos em um grupo.$count (aggregation stage), que retorna o número de documentos de entrada.
Sintaxe
{ $setWindowFields: { ... output: { <field>: { $count: {}, window: { documents: [ <lower boundary>, <upper boundary> ] } } } } }
$count não aceita parâmetros.
Dica
$count é funcionalmente equivalente ao uso de { $sum: 1 } no estágio $setWindowFields.
Exemplo
Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.
Contagem de filmes com classificação semelhante
Este exemplo usa a função de janela $count com uma janela baseada em intervalo para contar quantos filmes de ação de 2000 têm uma classificação IMDb dentro de 0.5 pontos da classificação de cada filme.
db.movies.aggregate( [ { $match: { genres: "Action", year: 2000, "imdb.rating": { $ne: null } } }, { $setWindowFields: { sortBy: { "imdb.rating": 1 }, output: { moviesWithSimilarRating: { $count: {}, window: { range: [ -0.5, 0.5 ] } } } } }, { $project: { _id: 0, title: 1, "imdb.rating": 1, moviesWithSimilarRating: 1 } }, { $sort: { "imdb.rating": -1 } }, { $limit: 10 } ] )
No exemplo anterior:
$matchfiltros para filmes de ação lançados em 2000 que têm um valor deimdb.rating.sortBy: { "imdb.rating": 1 }classifica documentos por classificação do IMDb em ordem crescente. UmsortByé necessário ao usar uma janela baseada em intervalo.outputusa$countpara definir o campomoviesWithSimilarRatingpara o número de filmes cuja classificação do IMDb se enquadra na janela atual.A janela usa
range: [ -0.5, 0.5 ], que inclui todos os documentos cujoimdb.ratingestá dentro de 0.5 pontos da classificação do documento atual.$projectinclui os campostitle,imdb.ratingemoviesWithSimilarRatingna saída.$sorte$limitretornam os 10 filmes mais bem avaliados em termos de legibilidade.
A saída mostra que Contentador (8.5), com uma classificação relativamente única, tem uma contagem de moviesWithSimilarRating menor do que filmes com classificações mais comuns, como 7.4.