Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

cursor.count() (método mongosh)

cursor.count()

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação de um driver de idioma específico, como Node.js.

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

Observação

Os drivers do MongoDB descontinuam suas respectivas APIs de cursor e coleção count() em favor de novas APIs que correspondem a countDocuments() e estimatedDocumentCount(). Para obter os nomes de API específicos de um determinado driver, consulte a documentação de API do driver.

Conta o número de documentos referenciados por um cursor. Anexe o método count() a uma query find() para retornar o número de documentos correspondentes. A operação não executa a query, mas conta os resultados que seriam retornados pela query.

O método count() tem a seguinte forma de protótipo:

db.collection.find(<query>).count()

O método count() tem o seguinte parâmetro:

Parâmetro
Tipo
Descrição

applySkipLimit

booleano

Opcional. mongosh ignora qualquer valor que você defina para esta opção. O valor padrão é true.

A opção especifica se deve considerar os efeitos dos cursor.skip() cursor.limit() métodos e na contagem. Por padrão, o métodocount()ignora os efeitos docursor.skip()ecursor.limit() . Você deve definir applySkipLimit como true para considerar o efeito desses métodos.

O shell mongo legado , que agora está obsoleto, usou sua configuração para esta opção.

O MongoDB também fornece um db.collection.count() equivalente como uma alternativa à construção db.collection.find(<query>).count().

O MongoDB oferece suporte ao uso de hint() com count(). Consulte Especificar o índice a ser usado para obter um exemplo.

Dica

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

Quando você chama count() em uma operação find() que não especifica um predicado de query, o método count() pode retornar contagens de documentos imprecisas. Esses métodos de 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, 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, count() sem um predicado de query no find 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.

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.

Os exemplos a seguir são do método count() .

A seguinte operação conta o número de todos os documentos na collection orders:

db.orders.find().count()

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

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

A operação a seguir conta o número de documentos na coleção orders com o campo ord_dt maior que new Date('01/01/2012'), levando em conta o efeito do limit(5):

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

A seguinte operação utiliza o índice denominado "status_1", que tem a especificação da chave de índice de { status: 1 }, para retornar uma contagem dos documentos na coleção orders com o campo ord_dt maior que new Date('01/01/2012') e o campo status é igual a "D":

db.orders.find(
{ ord_dt: { $gt: new Date('01/01/2012') }, status: "D" }
).hint( "status_1" ).count()

Voltar

cursor.comment

Nesta página