Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

db.collection.count()

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Exemplos
db.collection.count(query, options)

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação de comandos de banco de dados nem drivers específicos de linguagem, como Node.js.

Para o comando do banco de dados, consulte o comando count .

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

Para a documentação de shell legada do mongo, consulte a documentação para a versão correspondente do MongoDB Server:

mongo shell v4.4

Observação

Os drivers do MongoDB compatíveis com os recursos da versão 4.0 descontinuam suas respectivas APIs de cursor e coleção count() em favor de novas APIs para countDocuments() e estimatedDocumentCount(). Para obter os nomes de API específicos de um determinado driver, consulte a documentação do driver.

Retorna a contagem de documentos que corresponderiam a uma consulta find() para a coleção ou exibição. O método db.collection.count() não executa a operação find(), mas conta e retorna o número de resultados que correspondem a uma consulta.

Você pode utilizar o db.collection.count() para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

  • 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

Este método utiliza os seguintes parâmetros:

Parâmetro
Tipo
Descrição
query
documento
Os critérios de seleção da consulta.
options
documento
Opcional. Opções extras para modificar a contagem.

O documento options contém os seguintes campos:

Campo
Tipo
Descrição
limit
inteiro
Opcional. O número máximo de documentos para contar.
skip
inteiro
Opcional. O número de documentos a serem ignorados antes da contagem.
hint
string ou documento
Opcional. Uma dica de nome de índice ou especificação para a consulta.
maxTimeMS
inteiro
Opcional. O tempo máximo para permitir a execução da consulta.
readConcern
string

Opcional. Especifica a preocupação de leitura. O nível padrão é "local".

Para garantir que um único thread possa ler suas próprias gravações, use "majority" read concern e "majority" write concern em relação ao primário do conjunto de réplicas.

Para usar um nível de preocupação de leitura de "majority", você deve especificar uma condição query não vazia.

collation
documento

Opcional.

Especifica o agrupamento a ser usado 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:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Ao especificar agrupamento, o campo locale é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.

Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte db.createCollection()), a operação usará o agrupamento especificado para a coleção.

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().

Dica

Ao chamar count() sem um predicado de query, você pode receber contagens imprecisas de documentos. Sem um predicado de query, os métodos count() retornam resultados com base nos metadados da coleção, o que pode resultar em uma contagem aproximada. Em particular,

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.

Você não pode usar count e assistentes de shell count() e db.collection.count() em transações.

Para obter detalhes, consulte Operações de transações e contagem.

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

Veja também:

$collStats para retornar uma contagem aproximada com base nos metadados da coleção.

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.

Após um desligamento impuro 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:

Observação

Essa perda de precisão só se aplica a count() operações que não incluem um predicado de query.

A partir do MongoDB 4.2, se o cliente que emitiu db.collection.count() se desconectar antes da conclusão da operação, o MongoDB marcará db.collection.count() para encerramento usando killOp.

Para contar o número de todos os documentos na coleção orders, utilize a seguinte operação:

db.orders.count()

Esta operação é equivalente ao seguinte:

db.orders.find().count()

Conte o número de documentos na coleção orders com o campo ord_dt maior que new Date('01/01/2012'):

db.orders.count( { ord_dt: { $gt: new Date('01/01/2012') } } )

A consulta é equivalente ao seguinte:

db.orders.find( { ord_dt: { $gt: new Date('01/01/2012') } } ).count()
← db.collection.configureQueryAnalyzer()