Overview
En esta guía, se puede aprender cómo usar el controlador C para encontrar y recuperar documentos de una colección de MongoDB mediante operaciones de lectura. Puedes llamar al mongoc_collection_find_with_opts()
función para recuperar documentos que coincidan con un conjunto de criterios especificados en un filtro de query.
Datos de muestra
Los ejemplos de esta guía usan la colección restaurants en la base de datos sample_restaurants de la 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 ejemplo, consulta la guía Introducción a MongoDB.
Buscar documentos
La mongoc_collection_find_with_opts() función utiliza un filtro de consulta y devuelve todos los documentos coincidentes de una colección. Un filtro de consulta es un documento que especifica los criterios que utiliza el controlador para buscar coincidencias en la colección.
Para obtener más información acerca de los filtros de query, consulte la Guía 'Especificar una query' .
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 que 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() del ejemplo anterior devuelve un mongoc_cursor_t *, que se puede iterar mediante la función mongoc_cursor_next() y un bucle while. El siguiente ejemplo itera e imprime los resultados de la consulta 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
Puede modificar el comportamiento de la función mongoc_collection_find_with_opts() pasando una estructura bson_t que contenga las opciones que desee configurar. La siguiente tabla describe las opciones que se utilizan habitualmente para modificar consultas:
Opción | Descripción |
|---|---|
| Sets the collation options for the query. |
| Specifies a string to attach to the query. This can help you trace and interpret the
operation in the server logs and in profile data. To learn more about query comments,
see the cursor.comment() page in the
MongoDB Server manual. |
| Specifies the index to use for the query. |
| Limits the number of documents to be returned from the query. |
| Sets the maximum execution time on the server for this operation. |
| Sets the number of documents to skip. |
| Defines the sort criteria to apply to the query. |
El siguiente ejemplo utiliza las opciones limit y maxTimeMS para limitar la cantidad de documentos devueltos por la consulta a 10 y establecer un tiempo de ejecución máximo 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: