Menu Docs

Página inicial do DocsGo

Contagem de documentos

Nesta página

  • Visão geral
  • Contagem precisa
  • Agregação
  • Contagem estimada
  • Informações adicionais

Neste guia, você pode aprender a obter uma contagem precisa e estimada do número de documentos em sua coleção.

Para executar os exemplos neste guia, carregue os dados de amostra na collection tea.ratings com o seguinte trecho:

coll := client.Database("tea").Collection("ratings")
docs := []interface{}{
bson.D{{"type", "Masala"}, {"rating", 10}},
bson.D{{"type", "Matcha"}, {"rating", 7}},
bson.D{{"type", "Assam"}, {"rating", 4}},
bson.D{{"type", "Oolong"}, {"rating", 9}},
bson.D{{"type", "Chrysanthemum"}, {"rating", 5}},
bson.D{{"type", "Earl Grey"}, {"rating", 8}},
bson.D{{"type", "Jasmine"}, {"rating", 3}},
bson.D{{"type", "English Breakfast"}, {"rating", 6}},
bson.D{{"type", "White Peony"}, {"rating", 4}},
}
result, err := coll.InsertMany(context.TODO(), docs)
if err != nil {
panic(err)
}
fmt.Printf("Number of documents inserted: %d\n", len(result.InsertedIDs))

Dica

Bancos de Dados e Coleções Inexistentes

Se o banco de dados e a collection necessários não existirem quando você executar uma operação de escrita, o servidor implicitamente os criará.

Cada documento contém uma classificação para um tipo de chá que corresponde aos campos type e rating .

Para contar o número de documentos que correspondem ao seu filtro de queries, utilize o método CountDocuments().

Dica

Se você passar por um filtro de queries vazio, esse método retornará o número total de documentos na coleção.

Você pode modificar o comportamento de CountDocuments() passando a um tipo CountOptions. Se você não especificar nenhuma opção, o driver usará seus valores padrão.

O tipo CountOptions permite a você configurar opções com os seguintes métodos:

Método
Descrição
SetCollation()
The type of language collation to use when sorting results.
Default: nil
SetHint()
The index to use to scan for documents to count.
Default: nil
SetLimit()
The maximum number of documents to count.
Default: 0
SetMaxTime()
The maximum amount of time that the query can run on the server.
Default: nil
SetSkip()
The number of documents to skip before counting.
Default: 0

O exemplo a seguir conta o número de documentos em que o rating é menor que 6:

filter := bson.D{{"rating", bson.D{{"$lt", 6}}}}
count, err := coll.CountDocuments(context.TODO(), filter)
if err != nil {
panic(err)
}
fmt.Printf("Number of ratings less than six: %d\n", count)

Você também pode incluir o estágio $count para contar o número de documentos em um pipeline de agregação.

O exemplo a seguir executa as seguintes ações:

  • Conta o número de documentos em que o rating é maior que 5

  • Atribui a contagem a um campo chamado total_documents

matchStage := bson.D{{"$match", bson.D{{"rating", bson.D{{"$gt", 5}}}}}}
countStage := bson.D{{"$count", "total_documents"}}
cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{matchStage, countStage})
if err != nil {
panic(err)
}
var results []bson.D
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
fmt.Println(result)
}

Para estimar o número de documentos em sua coleção, use o método EstimatedDocumentCount().

Observação

O método EstimatedDocumentCount() é mais rápido do que o método CountDocuments(), pois usa os metadados da coleção em vez de fazer a varredura de toda a coleção.

Você pode modificar o comportamento de EstimatedDocumentCount() passando um tipo EstimatedDocumentCountOptions. Se você não especificar nenhuma opção, o driver usará os valores padrão.

O tipo EstimatedDocumentCountOptions permite a você configurar opções com os seguintes métodos:

Método
Descrição
SetMaxTime()
The maximum amount of time that the query can run on the server.
Default: nil

O exemplo a seguir estima o número de documentos na coleção ratings:

count, err := coll.EstimatedDocumentCount(context.TODO())
if err != nil {
panic(err)
}
fmt.Printf("Estimated number of documents in the ratings collection: %d\n", count)

Para saber mais sobre as operações mencionadas, consulte os seguintes guias:

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

←  Especificar uma queryRetrieve Data →
Dê Feedback
© 2022 MongoDB, Inc.

Sobre

© 2022 MongoDB, Inc.