As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
$ count (acumulador)
Novo na versão 8.0.1.
Use o $count acumulador dentro de um $group estágio para retornar o número de documentos em cada grupo. Ele aceita um objeto vazio {} como argumento.
Isso é diferente do estágio do $count pipeline, que é um estágio independente que conta todos os documentos que passam pelo pipeline. Em vez disso, o $count acumulador conta os documentos dentro de cada grupo produzido por$group.
Sintaxe
{ $count: {} }
Parâmetros
-
O
$countacumulador não aceita argumentos. Ele aceita um objeto vazio{}e retorna a contagem de documentos em cada grupo.
Exemplo (MongoDB Shell)
O exemplo a seguir mostra como usar o $count acumulador para contar o número de produtos em cada categoria.
Crie documentos de amostra
db.products.insertMany([ { name: "Widget", category: "A" }, { name: "Gadget", category: "A" }, { name: "Doohickey", category: "B" }, { name: "Thingamajig", category: "B" }, { name: "Whatsit", category: "B" } ])
Exemplo de consulta
db.products.aggregate([ { $group: { _id: "$category", count: { $count: {} } } } ])
Saída
[
{ "_id": "A", "count": 2 },
{ "_id": "B", "count": 3 }
]
Exemplo de uso do operador de janela (MongoDB Shell)
Novo na versão 8.0.2.
O $count acumulador também pode ser usado como operador de janela no $setWindowFields palco. Nesse contexto, ele retorna o número de documentos em cada janela. Você especifica o operador no output campo e, opcionalmente, define os limites da janela com um window documento.
Crie documentos de amostra
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 } ])
Exemplo de consulta
O exemplo a seguir particiona os documentos porcategory, classifica cada partição por day e retorna uma contagem contínua de documentos desde o início da partição até o documento atual.
db.events.aggregate([ { $setWindowFields: { partitionBy: "$category", sortBy: { day: 1 }, output: { runningCount: { $count: {}, window: { documents: ["unbounded", "current"] } } } } } ])
Saída
[
{ "_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 é aumentado com runningCount o número de documentos em sua partição até o documento atual, inclusive.
Exemplos de código
Para ver um exemplo de código para usar o $count acumulador, escolha a guia do idioma que você deseja usar. Os exemplos a seguir mostram o uso do acumulador (em$group) e o uso do operador de janela (em$setWindowFields):