Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$count (acumulador)
Nuevo a partir de la versión 8.0.1.
Utilice el $count acumulador dentro de una $group etapa para obtener el número de documentos de cada grupo. Acepta un objeto vacío {} como argumento.
Esto es diferente de la fase de $count tramitación, que es una fase independiente en la que se cuentan todos los documentos que pasan por la tramitación. En cambio, el $count acumulador cuenta los documentos de cada grupo producido por. $group
Sintaxis
{ $count: {} }
Parámetros
-
El
$countacumulador no acepta argumentos. Acepta un objeto vacío{}y devuelve el recuento de documentos de cada grupo.
Ejemplo (MongoDB Shell)
El siguiente ejemplo muestra cómo usar el $count acumulador para contar el número de productos de cada categoría.
Crea documentos de muestra
db.products.insertMany([ { name: "Widget", category: "A" }, { name: "Gadget", category: "A" }, { name: "Doohickey", category: "B" }, { name: "Thingamajig", category: "B" }, { name: "Whatsit", category: "B" } ])
Ejemplo de consulta
db.products.aggregate([ { $group: { _id: "$category", count: { $count: {} } } } ])
Salida
[
{ "_id": "A", "count": 2 },
{ "_id": "B", "count": 3 }
]
Ejemplo de uso de un operador de ventana (MongoDB Shell)
Nuevo a partir de la versión 8.0.2.
El $count acumulador también se puede utilizar como operador de ventanas en el escenario. $setWindowFields En este contexto, devuelve el número de documentos de cada ventana. Especifique el operador en el output campo y, si lo desea, defina los límites de la ventana con un window documento.
Cree documentos de muestra
db.events.insertMany([ { _id: 1, category: "A", day: 1 }, { _id: 2, category: "A", day: 2 }, { _id: 3, category: "A", day: 3 }, { _id: 4, category: "B", day: 1 }, { _id: 5, category: "B", day: 2 } ])
Ejemplo de consulta
En el ejemplo siguiente se dividen los documentoscategory, se ordenan las day particiones y se devuelve un recuento continuo de los documentos desde el principio de la partición hasta el documento actual.
db.events.aggregate([ { $setWindowFields: { partitionBy: "$category", sortBy: { day: 1 }, output: { runningCount: { $count: {}, window: { documents: ["unbounded", "current"] } } } } } ])
Salida
[
{ "_id": 1, "category": "A", "day": 1, "runningCount": 1 },
{ "_id": 2, "category": "A", "day": 2, "runningCount": 2 },
{ "_id": 3, "category": "A", "day": 3, "runningCount": 3 },
{ "_id": 4, "category": "B", "day": 1, "runningCount": 1 },
{ "_id": 5, "category": "B", "day": 2, "runningCount": 2 }
]
Cada documento se complementa con runningCount el número de documentos de su partición, hasta incluir el documento actual.
Ejemplos de código
Para ver un ejemplo de código sobre el uso del $count acumulador, elija la pestaña correspondiente al idioma que desee utilizar. Los siguientes ejemplos muestran tanto el uso del acumulador (en$group) como el uso del operador de ventanas (en): $setWindowFields