Overview
En esta guía, puedes aprender a usar el controlador C para encontrar y recuperar documentos de una colección de MongoDB utilizando operaciones de lectura. Puedes llamar la función mongoc_collection_find_with_opts() para recuperar documentos que cumplan con un conjunto de criterios especificados en un filtro de query.
Datos de muestra
Los ejemplos en esta guía utilizan la colección restaurants en la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta la guía MongoDB Primeros Pasos.
Buscar documentos
La función mongoc_collection_find_with_opts() toma un filtro de query y devuelve todos los documentos coincidentes de una colección. Un filtro de query es un documento que especifica los criterios que el driver utiliza para hacer coincidir documentos de la colección.
Para obtener más información sobre los filtros de query, consulta la guía Especificar una consulta.
Ejemplo de búsqueda de documentos
El siguiente ejemplo utiliza la función mongoc_collection_find_with_opts() para encontrar todos los documentos en los cuales el valor del campo cuisine es "Spanish":
bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Spanish")); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
La operación mongoc_collection_find_with_opts() en el ejemplo anterior devuelve un mongoc_cursor_t *, que se puede recorrer mediante la función mongoc_cursor_next() y un bucle while. El siguiente ejemplo itera y muestra los resultados devueltos en la query anterior:
const bson_t *doc; bson_error_t error; while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } // Ensure we iterated through cursor without error if (mongoc_cursor_error(results, &error)) { fprintf(stderr, "Error getting results: %s\n", error.message); } mongoc_cursor_destroy(results); bson_destroy(filter);
{ "_id" : { "$oid" : "..." }, "name" : "Charle'S Corner Restaurant & Deli", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Real Madrid Restaurant", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Malaga Restaurant", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Cafe Espanol", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Cafe Riazor", "cuisine" : "Spanish", ... } ...
Nota
Encuentre todos los documentos
Para encontrar todos los documentos en una colección, pasa un filtro vacío a la función mongoc_collection_find_with_opts():
bson_t *empty_filter = bson_new(); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, empty_filter, NULL, NULL); mongoc_cursor_destroy(results); bson_destroy(empty_filter);
Modificar el comportamiento de búsqueda
Puedes modificar el comportamiento de la función mongoc_collection_find_with_opts() pasando una estructura bson_t que contenga las opciones que deseas configurar. La siguiente tabla describe las opciones que se suelen usar para modificar las queries:
Opción | Descripción |
|---|---|
| Establece las opciones de intercalación para la consulta. |
| Especifica una string para adjuntar a la query. Esto puede ayudarle a rastrear e interpretar la operación en los registros del servidor y en los datos del perfil. Para obtener más información sobre los comentarios de query, consulte la página cursor.comment() en el manual de MongoDB Server. |
| Especifica el índice que se utilizará para la query. |
| Limita el número de document que se devolverán de la query. |
| Establece el tiempo máximo de ejecución en el servidor para esta operación. |
| Establece el número de documentos a omitir. |
| Define los criterios de ordenación que se aplicarán a la query. |
El siguiente ejemplo utiliza las opciones limit y maxTimeMS para limitar el número de documentos devueltos por la query a 10 y establece un tiempo máximo de ejecución de 10000 milisegundos en la operación:
bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Spanish")); bson_t *opts = BCON_NEW("limit", BCON_INT32(10), "maxTimeMS", BCON_INT32(10000)); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, opts, NULL); mongoc_cursor_destroy(results); bson_destroy(filter); bson_destroy(opts);
Para obtener una lista completa de opciones que modifican el comportamiento de mongoc_collection_find_with_opts(), consulta la documentación del método find en el manual de MongoDB Server.
Información Adicional
Para más información sobre los filtros de query, consultar Especificar una query.
Para ver ejemplos de código ejecutables que obtienen documentos usando el driver C, consulta Leer datos.
Documentación de la API
Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API: