Overview
En esta guía, puedes aprender a omitir un número especificado de resultados devueltos por operaciones de lectura.
Datos de muestra
Los ejemplos de esta guía utilizan lo siguiente: Course Estructura como modelo para los documentos de la colección courses:
type Course struct { Title string Enrollment int32 }
Para ejecutar los ejemplos de esta guía, cargue estos documentos en la colección db.courses con el siguiente fragmento:
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)
Tip
Bases de datos y colecciones inexistentes
Si la base de datos y la colección necesarias no existen cuando realiza una operación de escritura, el servidor las crea implícitamente.
Cada documento contiene una descripción de un curso universitario que incluye el título del curso y la matrícula máxima, correspondientes a los campos title y enrollment.
Omitir
Para omitir una cantidad específica de resultados devueltos de una consulta, pase la cantidad de documentos que desea omitir al método SetSkip() de las opciones de la operación de lectura.
Las siguientes operaciones de lectura toman un objeto de opciones como parámetro:
Find()FindOne()CountDocuments()gridfs.Bucket.Find()
Si la cantidad de documentos excede la cantidad de documentos coincidentes para una consulta, esa consulta no devuelve ningún documento.
Tip
Pasar un número negativo al método SetSkip() genera un error de tiempo de ejecución.
Las operaciones de búsqueda devuelven los documentos en un orden natural, sin clasificarlos por campo. Para evitar omitir documentos aleatorios, utilice el método SetSort() para ordenar los documentos por un campo con valores únicos antes de configurar una opción de omisión.
Ejemplo
El siguiente ejemplo realiza una operación Find() con el siguiente comportamiento:
Ordena los resultados en orden ascendente en el campo
enrollment.Omite los dos primeros 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)) }
{"title":"Plate Tectonics","enrollment":45} {"title":"Abstract Algebra","enrollment":60}
Agregación
También puedes incluir el Etapa $skip en una canalización de agregación para omitir documentos.
Ejemplo
El siguiente ejemplo realiza una operación Aggregate() con el siguiente comportamiento:
Ordena los resultados en orden descendente en el campo
enrollmentOmite el primer 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)) }
{"title":"Plate Tectonics","enrollment":45} {"title":"World Fiction","enrollment":35} {"title":"Modern Poetry","enrollment":12}
Información Adicional
Para obtener más información sobre las operaciones mencionadas, consulte las siguientes guías:
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos discutidos en esta guía, consultar la siguiente documentación de la API: