Docs Menu
Docs Home
/ /

Omitir resultados devueltos

En esta guía, puedes aprender a omitir un número especificado de resultados devueltos por operaciones de lectura.

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.

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.

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}

También puedes incluir el Etapa $skip en una canalización de agregación para omitir documentos.

El siguiente ejemplo realiza una operación Aggregate() con el siguiente comportamiento:

  • Ordena los resultados en orden descendente en el campo enrollment

  • Omite 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}

Para obtener más información sobre las operaciones mencionadas, consulte las siguientes guías:

  • Especifica un query

  • Retrieve Data

  • Ordenar resultados

  • Agregación

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:

Volver

Ordenar resultados

En esta página