Como contar documentos com contagem agregada do MongoDB

Como Contar Documentos Com Contagem Agregada Do Mongodb



Como o nome sugere, a agregação $count no MongoDB deve ser utilizada para contar registros de campo. Uma das formas populares de contar registros é usar o método count(). Além disso, determinados operadores de agregação permitem contar registros trazidos de um estágio anterior do pipeline agregado. Neste guia de hoje, discutiremos a agregação de contagem do MongoDB usando exemplos de código.

Exemplo 01

Para realizar a operação $count nos campos de uma coleção de banco de dados no MongoDB, precisamos ter vários registros. Portanto, criamos uma coleção chamada “Test” e inserimos nela 12 registros simultaneamente usando a função insertMany(). Agora, os registros desta coleção “Test” foram exibidos no shell do MongoDB por meio da consulta da função find(). Você pode ver que ele possui um total de três campos:_id, nome e pontuação.

teste> db.Test.find({})







Agora, para aplicar o estágio $count em qualquer campo, devemos usar a função agregada do MongoDB dentro da instrução “db”. A função agregada consiste na instrução de condição, geralmente usando o operador $match em um campo específico, seguida por um novo campo que exibe a contagem total obtida do campo de condição especificado usando o operador $count.



No nosso caso, empregamos o operador $match para procurar os registros correspondentes para o valor “60” no campo de pontuação, enquanto o operador $count foi usado para contar o número total de registros buscados e exibi-los sob o novo campo denominado “SameScore”. A saída desta consulta mostra um campo ‘SameScore” com o valor “2” indicando que existem dois registros com o valor “score” “60” é 2 na coleção “Teste”.



db.Test.agregado([ { $correspondência: { 'pontuação' : 60 } }, { $contar: 'Mesma pontuação' } ])

Você também pode usar a agregação $count para contar os campos que não sejam números, como o campo “nome” da coleção Test. Temos usado agregação de correspondência para procurar o registro na coleção onde o campo nome possui o valor “John”. A agregação de contagem contou com êxito o número total de registros correspondentes, que é 2.





db.Test.agregado([ { $correspondência: { 'nome' : 'John' } }, { $contar: 'Mesmo nome' } ])

Exemplo 02

Vamos atualizar a consulta acima e aplicar outra condição para obter registros diferentes. Desta vez, aplicaremos a agregação $match do campo de pontuação para obter a contagem total de registros onde o campo de pontuação tem um valor inferior a 30. A agregação de contagem contará o número total de registros e adicionará a um novo coluna “GrauD”. A saída mostra o resultado “2” como o número de contagem do valor correspondente.

db.Test.agregado( [ { $correspondência: {pontuação: { $lt: 30 } } }, { $contar: 'Grau D' } ] )

Você também pode usar a agregação $count ao aplicar os operadores lógicos para executar mais de uma condição nos registros do campo. Portanto, um total de duas condições foram aplicadas ao campo “Pontuação” usando o operador $and: gte (maior ou igual a) e lte (menor e igual a). Ambas as condições devem ser verdadeiras para obter o resultado e contar seus registros. A contagem total mostra que há cinco registros com os critérios correspondentes.



db.Test.agregado( [ { $correspondência: { '$ e' : [ { 'pontuação' : {$gte: 60 }}, { 'pontuação' : {$lte: 80 }} ] }},

{$contagem: 'Série b' } ] )

Exemplo 03

Nas ilustrações acima, usamos a agregação de contagem para obter apenas o número de registros correspondentes para valores de campo específicos, como uma pontuação ou nome especificado. O método de agregação do MongoDB permite obter o número de contagem de todos os registros contendo valores duplicados na coleção.

Para isso, você precisa usar a agregação $group dentro do comando da função agregada, conforme abaixo. O campo _id foi usado para especificar o campo “nome” no qual a agregação de contagem funcionaria. Junto com isso, o campo definido pelo usuário NameCount utilizará a agregação $count para contar várias duplicatas no campo “nome”.

A saída desta consulta foi exibida abaixo. Ele contém os valores do campo “nome” e seu número de contagem dentro do campo NameCount de acordo com as duplicações de valores, como Cillian tendo 4 duplicatas e assim por diante.

db.Test.agregado([ { $grupo: { _id: '$nome' , NameCount: { $count: {} }, }, }, ])

Exemplo 04

Também podemos usar a agregação de contagem em registros de campos aninhados para contar valores de campos específicos. Para elaborar isso, criamos uma coleção chamada “Professor” e adicionamos o campo aninhado “sub” e o campo do tipo array “shift” dentro dela junto com outros campos: nome e pagamento. A função find() exibe todos os cinco registros desta coleção.

teste> db.Teacher.find({})

Agora, aplicamos a função agregada que contém o operador match. Além disso, o operador $and foi aplicado ao subcampo “math” do “sub”campo, que contém duas condições diferentes. A contagem foi então calculada. A saída mostra que há dois registros onde o subcampo math tem valores maiores que 10 e menores que 20.

db.Teacher.agregado( [ { $correspondência: { '$ e' : [ { 'sub.matemática' : {$gte: 10 }}, { 'sub.matemática' : {$lte: vinte }} ] }}, { $contar: 'Nota A' } ] )

Exemplo 05

Vejamos o último exemplo para ilustrar o uso da função count() desta vez em vez de usar a agregação de contagem. Portanto, a função count() foi aplicada ao campo do tipo array da coleção “Professor”, ou seja, “shift”. Usando os índices para o campo da matriz usando o índice 2, especificamos os critérios de correspondência como “noite”. Ele produz “2” como o número total de contagens para a entrada “noite”.

db.Teacher.count({ 'mudança.2' : 'noite' })

De forma muito semelhante, a função count() também pode ser aplicada aos campos aninhados, como o subcampo “phy” do campo “sub” da coleção “Professor”. Especificamos os critérios de correspondência usando o operador “lte” indicando valores menores que 14 no subcampo “phy”. A saída desta instrução exibiu “2”, ou seja, 4 registros com valor menor que 14.

db.Teacher.count({ 'sub.phy' : {$lte: 14 } })

Conclusão

Este guia tem demonstrado e elaborado o uso da agregação $count do MongoDB com vários exemplos de código. Os exemplos incluem a implicação da agregação de contagem para buscar o número de contagem para registros de valores específicos e todos os registros de campo através das coleções. Além disso, inclui o uso de agregação de contagem em campos de matriz e campos incorporados (aninhados). No final, o exemplo da função count() foi incluído para fazer a diferença entre o uso da agregação de contagem e a função de contagem.