Menu Docs

Página inicial do DocsGo

Limite o número de resultados retornados

Nesta página

  • Visão geral
  • Limite
  • Várias Opções
  • Agregação
  • Informações adicionais

Nesta aba, você pode saber como limitar o número de documentos retornados de uma operação de leitura.

Para executar os exemplos neste guia, carregue estes documentos 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", "Assam"}, {"rating", 5}},
bson.D{{"type", "Oolong"}, {"rating", 7}},
bson.D{{"type", "Earl Grey"}, {"rating", 8}},
bson.D{{"type", "English Breakfast"}, {"rating", 5}},
}
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 .

Observação

Cada exemplo trunca o valor ObjectID porque o driver o gera exclusivamente.

Para limitar o número de documentos retornados de uma consulta, passe o número de documentos que você deseja retornar ao método SetLimit() das opções da operação de leitura.

Especifique as opções como o último parâmetro para os seguintes métodos de operação de leitura:

  • Find()

  • CountDocuments()

  • gridfs.Bucket.Find()

Se o limite for 0 ou exceder o número de documentos correspondentes, o método retornará todos os documentos. Se o limite for um número negativo, o método se comportará como se o limite fosse o valor absoluto do número negativo e fechará o cursor após a recuperação dos documentos.

O exemplo a seguir mostra como gerar dois documentos:

filter := bson.D{}
opts := options.Find().SetLimit(2)
cursor, err := coll.Find(context.TODO(), filter, opts)
var results []bson.D
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
fmt.Println(result)
}

Se você configurar outras opções junto com o método SetLimit() , o driver executará o limite por último, independentemente da ordem em que você listar as opções.

O exemplo a seguir executa as seguintes ações em ordem usando o método Find() :

  • Classificar o campo rating em ordem decrescente

  • Ignorar o primeiro documento

  • Devolva os dois primeiros documentos restantes

filter := bson.D{}
opts := options.Find().SetSort(bson.D{{"rating", -1}}).SetLimit(2).SetSkip(1)
cursor, err := coll.Find(context.TODO(), filter, opts)
var results []bson.D
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
fmt.Println(result)
}

Dica

Usar qualquer uma das seguintes declarações de opção também produz o mesmo resultado:

multiOptions := options.Find().SetSort(bson.D{{"rating", -1}}).SetSkip(1).SetLimit(2)
multiOptions := options.Find().SetLimit(2).SetSort(bson.D{{"rating", -1}}).SetSkip(1)
multiOptions := options.Find().SetLimit(2).SetSkip(1).SetSort(bson.D{{"rating", -1}})
multiOptions := options.Find().SetSkip(1).SetSort(bson.D{{"rating", -1}}).SetLimit(2)
multiOptions := options.Find().SetSkip(1).SetLimit(2).SetSort(bson.D{{"rating", -1}})

Você também pode incluir o estágio $limit para especificar um limite em uma pipeline de agregação.

O exemplo a seguir mostra como gerar três documentos:

limitStage := bson.D{{"$limit", 3}}
cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{limitStage})
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 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:

←  Ignorar resultados devolvidosEspecifique quais campos retornar →
Dê Feedback
© 2022 MongoDB, Inc.

Sobre

© 2022 MongoDB, Inc.