Overview
En esta guía, puede aprender a especificar qué documentos devolver de una operación de lectura mediante las siguientes operaciones:
limit: Especifica el número máximo de documentos que se devolverán de una consultasort: Especifica el orden de clasificación de los documentos devueltosskip: Especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la consulta
Datos de muestra
Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de ejemplo de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulte la guía de introducción a MongoDB.
Limit
Para especificar la cantidad máxima de documentos devueltos de una operación de lectura, pase la opción limit a su llamada de función mongoc_collection_find_with_opts().
El siguiente ejemplo encuentra todos los restaurantes que tienen un valor de campo cuisine de "Italian" y limita los resultados a 5 documentos:
const bson_t *doc; bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Italian")); bson_t *opts = BCON_NEW("limit", BCON_INT64(5)); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, opts, NULL); while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } bson_destroy(filter); bson_destroy(opts); mongoc_cursor_destroy(results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "V & T Restaurant", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Mimis Restaurant & Bar", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Venice Restaurant", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Areo Restaurant", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Tre Giovani Pizza & Pasta", ... }
Tip
El ejemplo anterior devuelve los primeros cinco documentos devueltos por la consulta en orden natural. La siguiente sección describe cómo devolver los documentos en un orden de clasificación específico.
Sort
Para devolver los documentos en un orden específico, use la opción sort. La opción sort toma como parámetro la dirección de ordenación. Para especificar la dirección de ordenación, pase 1 para una ordenación ascendente o -1 para una ordenación descendente. La ordenación ascendente ordena los valores de menor a mayor, y la ordenación descendente los ordena de mayor a menor.
El siguiente ejemplo devuelve todos los documentos con un valor de campo cuisine de "Italian", ordenados por el valor del campo name en orden ascendente:
const bson_t *doc; bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Italian")); bson_t *opts = BCON_NEW("sort", "{", "name", BCON_INT32(1), "}"); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, opts, NULL); while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } bson_destroy(filter); bson_destroy(opts); mongoc_cursor_destroy(results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "(Lewis Drug Store) Locanda Vini E Olii", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "101 Restaurant And Bar", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "44 Sw Ristorante & Bar", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "900 Park", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "A Voce", ... } ...
Omitir
Para omitir un número específico de documentos antes de devolver los resultados de la consulta, utilice la opción skip e indique el número de documentos que desea omitir. La opción skip ignora el número especificado de documentos en los resultados de la consulta y devuelve el resto.
El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de "Italian" y omite los primeros 10 documentos:
const bson_t *doc; bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Italian")); bson_t *opts = BCON_NEW("skip", BCON_INT64(10)); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, opts, NULL); while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } bson_destroy(filter); bson_destroy(opts); mongoc_cursor_destroy(results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Trattoria Alba", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Da Umberto Restaurant", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "La Strada Restaurant", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Pasta Lovers Trattoria", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Nanni Restaurant", ... } ...
Combinar límite, ordenar y omitir
Puede combinar las opciones limit, sort y skip en una sola operación. Esto le permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número específico de documentos antes de devolverlos.
El siguiente ejemplo devuelve documentos con el valor de campo cuisine igual a "Italian". Los resultados se ordenan alfabéticamente, omitiendo los primeros 10 documentos y limitándolos a 5:
const bson_t *doc; bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Italian")); bson_t *opts = BCON_NEW("limit", BCON_INT64(5), "skip", BCON_INT64(10), "sort", "{", "name", BCON_INT32(1), "}"); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, opts, NULL); while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } bson_destroy(filter); bson_destroy(opts); mongoc_cursor_destroy(results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acqua", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acqua Restaurant", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acqua Santa", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acquista Trattoria", ... } { "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acquolina Catering", ... }
Nota
El orden en que se llaman estos métodos no modifica los documentos devueltos. El controlador reordena automáticamente las llamadas para realizar primero las operaciones de ordenación y omisión, y después la operación de límite.
Información Adicional
Para obtener más información sobre cómo especificar una consulta, consulte Especifique una consulta.
Para más información sobre cómo recuperar documentos, visita Buscar documentos.
Documentación de la API
Para obtener más información sobre la mongoc_collection_find_with_opts() función, consulte la documentación de la API.