Overview
En esta guía, aprenderá a usar el controlador C para buscar y recuperar documentos de una colección de MongoDB mediante operaciones de lectura. Puede llamar al mongoc_collection_find_with_opts()
función para recuperar documentos que coinciden con un conjunto de criterios especificados en un filtro de 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.
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 sobre los filtros de consulta, consulte la Especifique una guía de 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 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 de una colección, pase 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 las opciones que modifican el comportamiento de,mongoc_collection_find_with_opts() consulte 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 recuperan documentos mediante el controlador C, consulte 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: