Menu Docs
Página inicial do Docs
/ / /
Driver GO
/ / /

Ignorar resultados devolvidos

Nesta página

  • Visão geral
  • Ignorar
  • Agregação
  • Informações adicionais

Neste guia, você pode aprender como ignorar um número específico de resultados retornados de operações de leitura.

Os exemplos nesta aba usam o seguinte struct Course como um modelo para documentos na coleção courses:

type Course struct {
Title string
Enrollment int32
}

Para executar os exemplos neste guia, carregue estes documentos na collection db.courses com o seguinte trecho:

coll := client.Database("db").Collection("courses")
docs := []interface{}{
Course{Title: "World Fiction", Enrollment: 35},
Course{Title: "Abstract Algebra", Enrollment: 60},
Course{Title: "Modern Poetry", Enrollment: 12},
Course{Title: "Plate Tectonics", Enrollment: 45},
}
result, err := coll.InsertMany(context.TODO(), docs)

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 descrição de um curso universitário que inclui o nome do curso e o número máximo de matrículas, correspondentes aos campos title e enrollment .

Para ignorar um número especificado de resultados retornados de uma query, passe o número de documentos que você deseja ignorar para o método SetSkip() das opções da operação de leitura.

As seguintes operações de leitura utilizam um objeto de opções como parâmetro:

  • Find()

  • FindOne()

  • CountDocuments()

  • gridfs.Bucket.Find()

Se o número de documentos exceder o número de documentos correspondentes para uma query, essa query não retornará nenhum documento.

Dica

Passar um número negativo para o método SetSkip() resulta em um erro de tempo de execução.

Encontre operações que retornam documento em uma ordem de armazenamento que não está classificada em nenhum campo. Para evitar ignorar documentos aleatórios, utilize o método SetSort() para classificar documentos em um campo com valores únicos antes de definir uma opção ignorar.

O seguinte exemplo executa uma operação do Find() com o seguinte comportamento:

  • Classifica os resultados em ordem crescente no campo enrollment

  • Pula os dois primeiros documentos

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

Você também pode incluir o estágio $skip em um aggregation pipeline para ignorar documentos.

O seguinte exemplo executa uma operação do Aggregate() com o seguinte comportamento:

  • Classifica os resultados em ordem decrescente no campo enrollment

  • Pula o primeiro documento

sortStage := bson.D{{"$sort", bson.D{{"enrollment", -1}}}}
skipStage := bson.D{{"$skip", 1}}
cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{sortStage, skipStage})
if err != nil {
panic(err)
}
var results []Course
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
res, _ := bson.MarshalExtJSON(result, false, false)
fmt.Println(string(res))
}

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

  • Especificar uma query

  • Recuperar dados

  • Classificar resultados

  • Agregação

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

← Classificar resultados