Importante
Método mongosh
Esta página documenta um método mongosh. Esta não é a documentação para comandos de banco de dados nem drivers específicos de linguagem, como Node.js.
Para o comando de banco de dados de dados, consulte o comando count.
Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.
Definição
db.collection.count(query, options)Retorna a contagem de documentos que corresponderiam a uma
find()query para a coleção ou visualização sem executar a operação de localização.Observação
Os drivers do MongoDB descontinuam suas respectivas APIs de cursor e coleção
count()em favor de novas APIs paracountDocuments()eestimatedDocumentCount(). Para obter os nomes de API específicos de um determinado driver, consulte a documentação do driver.
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O método db.collection.count() tem o seguinte formulário:
db.collection.count(query, options)
Parâmetros
Este método utiliza os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
|---|---|---|
| documento | Os critérios de seleção da consulta. |
| documento | Opcional. Opções extras para modificar a contagem. |
Campos
O documento options contém os seguintes campos:
Campo | Tipo | Descrição | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| inteiro | Opcional. O número máximo de documentos para contar. | ||||||||||
| inteiro | Opcional. O número de documentos a serem ignorados antes da contagem. | ||||||||||
| string ou documento | Opcional. Uma dica de nome de índice ou especificação para a consulta. | ||||||||||
| inteiro | Opcional. O tempo máximo para permitir a execução da consulta. | ||||||||||
| string | Opcional. Especifica a preocupação de leitura. O nível padrão é Para garantir que um único thread possa ler suas próprias gravações, use Para usar um nível de preocupação de leitura de | ||||||||||
| documento | Opcional. Opcional. Especifica a agrupamento para utilizar para a operação. A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento. A opção de agrupamento tem a seguinte sintaxe: Ao especificar agrupamento, o campo Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte Se nenhum agrupamento for especificado para a coleção ou para as operações, o MongoDB usa a comparação binária simples usada nas versões anteriores para comparações de strings. Você não pode especificar vários agrupamentos para uma operação. Por exemplo, você não pode especificar agrupamentos diferentes por campo ou, se estiver realizando uma busca com uma classificação, não poderá usar um agrupamento para a busca e outro para a classificação. |
count() é equivalente à construção db.collection.find(query).count() .
Comportamento
Contagens Imprecisas Sem Predicado de Consulta
Sem um predicado de query, count() retorna resultados com base nos metadados da coleção, o que pode resultar em uma contagem incorreta. Em particular,
Em um cluster fragmentado, a contagem resultante não filtrará corretamente documentos órfãos.
Após um desligamento não limpo ou sincronização inicial, a contagem pode estar incorreta.
Para contagens com base nos metadados da coleção, consulte também o estágio do pipeline do CollStats com a opção de contagem.
Contagem e Transações
Você não pode utilizar count e auxiliares de shell cursor.count() e count() em transações.
Para obter detalhes, consulte Operações de transações e contagem.
Clusters fragmentados
Em um cluster fragmentado, db.collection.count() sem um predicado de query pode resultar em uma contagem imprecisa se documentos órfãos existirem ou se uma migração de parte estiver em andamento.
Para evitar estas situações, em um cluster fragmentado, utilize o método db.collection.aggregate():
Você pode usar o estágio $count para contar os documentos. Por exemplo, a seguinte operação conta os documentos em uma coleção:
db.collection.aggregate( [ { $count: "myCount" } ])
O estágio $count é equivalente à seguinte sequência $group + $project:
db.collection.aggregate( [ { $group: { _id: null, count: { $sum: 1 } } }, { $project: { _id: 0 } } ] )
Dica
$collStats para retornar uma contagem aproximada com base nos metadados da coleção.
Uso do índice
Considere uma coleção com o seguinte índice:
{ a: 1, b: 1 }
Ao realizar uma contagem, o MongoDB pode retornar a contagem usando somente o índice se:
a consulta puder usar um índice,
a consulta contém apenas condições nas chaves do índicee
os predicados da consulta acessarem uma única faixa contígua de chaves de índice.
Por exemplo, as operações a seguir podem retornar a contagem usando apenas o índice:
db.collection.find( { a: 5, b: 5 } ).count() db.collection.find( { a: { $gt: 5 } } ).count() db.collection.find( { a: 5, b: { $gt: 10 } } ).count()
No entanto, se a consulta puder usar um índice, mas os predicados da consulta não acessarem uma única faixa contígua de chaves de índice ou a consulta também contiver condições em campos fora do índice, além de usar o índice, o MongoDB também deverá ler os documentos para retornar a contagem.
db.collection.find( { a: 5, b: { $in: [ 1, 2, 3 ] } } ).count() db.collection.find( { a: { $gt: 5 }, b: 5 } ).count() db.collection.find( { a: 5, b: 5, c: 5 } ).count()
Nesses casos, durante a leitura inicial dos documentos, o MongoDB pagina os documentos na memória de modo que as chamadas subsequentes da mesma operação de contagem terão melhor desempenho.
Precisão após Desligamento Inesperado
Depois de um desligamento impróprio de um mongod usando o mecanismo de armazenamento Wired Tiger, as estatísticas de contagem relatadas por count() podem ser imprecisas.
A quantidade de desvio depende do número de operações de inserção, atualização ou exclusão executadas entre o último ponto de verificação e o desligamento não limpo. Os pontos de verificação geralmente ocorrem a cada 60 segundos. No entanto, mongod instâncias executadas com configurações de --syncdelay não padrão podem ter pontos de verificação mais ou menos frequentes.
Execute validate em cada collection no mongod para restaurar as estatísticas depois de um desligamento impróprio.
Após um desligamento impróprio:
validateatualiza a estatística de contagem nacollStatssaída com o valor mais recente.Outras estatísticas, como o número de documentos inseridos ou removidos na
collStatssaída , são estimativas.
Observação
Essa perda de precisão só se aplica a operações count() que não incluem um predicado de query.
Desconexão do cliente
Se o cliente que emitiu count() se desconectar antes da conclusão da operação, o MongoDB marcará count() para encerramento usando killOp.
Exemplos
Contar todos os Documentos em uma Coleção
Para contar todos os documentos na coleção orders:
db.orders.count()
A operação equivalente é:
db.orders.find().count()
Contagem de todos os Documentos que Correspondem a uma Query
Contagem de documentos na coleção orders em que ord_dt é maior que new Date('01/01/2012'):
db.orders.count( { ord_dt: { $gt: new Date('01/01/2012') } } )
A operação equivalente é:
db.orders.find( { ord_dt: { $gt: new Date('01/01/2012') } } ).count()