Visão geral
Neste guia, você pode aprender como ignorar um número especÃfico de resultados retornados de operações de leitura.
Dados de amostra
Os exemplos deste guia utilizam o seguinte Course estruturado 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 .
Ignorar
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.
Exemplo
O seguinte exemplo executa uma operação do Find() com o seguinte comportamento:
Classifica os resultados em ordem crescente no campo
enrollmentPula 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)) }
Agregação
You can also include the $skip stage in an aggregation pipeline to skip documents.
Exemplo
O seguinte exemplo executa uma operação do Aggregate() com o seguinte comportamento:
Classifica os resultados em ordem decrescente no campo
enrollmentPula 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)) }
Informações adicionais
Para saber mais sobre as operações mencionadas, consulte os seguintes guias:
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: