Definición
Devuelve el número de documentos en una ventana determinada.
Nota
Desambiguación
Esta página describe $count cuando se utiliza como función de ventana.
También puedes usar $count en estos otros contextos:
$count (accumulator), que devuelve el número de documentos en un grupo.$count (aggregation stage), que devuelve el número de documentos de entrada.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $count: {}, window: { documents: [ <lower boundary>, <upper boundary> ] } } } } }
$count no admite ningún parámetro.
Tip
$count es funcionalmente equivalente a usar { $sum: 1 } en la etapa $setWindowFields.
Ejemplo
Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.
Contar películas con una calificación similar
Este ejemplo utiliza la función de ventana $count con una ventana basada en rangos para contar cuántas películas de acción de 2000 tienen una calificación de IMDb dentro de 0.5 puntos de la calificación de cada película.
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 } ] )
En el ejemplo precedente:
$matchFiltros para películas de acción estrenadas en 2000 que tengan un valorimdb.rating.sortBy: { "imdb.rating": 1 }Ordena los documentos por calificación de IMDb en orden ascendente. Se requiere unsortBycuando se utiliza una ventana basada en rangos.outpututiliza$countpara establecer el campomoviesWithSimilarRatingal número de películas cuya calificación de IMDb se encuentra dentro de la ventana actual.La ventana utiliza
range: [ -0.5, 0.5 ], que incluye todos los documentos cuyoimdb.ratingestá dentro de 0.5 puntos de la calificación del documento actual.$projectincluye los campostitle,imdb.ratingymoviesWithSimilarRatingen el resultado.$sorty$limitdevuelve las 10 películas mejor valoradas para facilitar la lectura.
El resultado muestra que Gladiator (8.5), con una calificación relativamente única, tiene un recuento de moviesWithSimilarRating menor que las películas con calificaciones más comunes como 7.4.