Docs Menu
Docs Home
/ /

Especifica un query

En esta guía, puede aprender a especificar una consulta utilizando el controlador C.

Puede definir un filtro de consulta para recuperar documentos específicos de una colección al realizar una consulta. Un filtro de consulta es una expresión que especifica los criterios de búsqueda que MongoDB utiliza para encontrar documentos en una operación de lectura o escritura. Al definir un filtro de consulta, puede indicar al controlador que busque documentos que coincidan exactamente con su consulta o crear filtros de consulta para expresar criterios de coincidencia más complejos.

Los ejemplos de esta guía utilizan el movies colección en la base de datos sample_mflix 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.

Las consultas de valor literal devuelven documentos que coinciden exactamente con su filtro de consulta.

El siguiente ejemplo especifica un filtro de consulta como parámetro de la función mongoc_collection_find_with_opts(). El código devuelve todos los documentos cuyo valor del campo type sea "movie".

const bson_t *doc;
bson_t *filter = BCON_NEW("type", BCON_UTF8("movie"));
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : { "$oid" : "..." }, "title" : "Wild and Woolly", "type" : "movie", ... }
{ "_id" : { "$oid" : "..." }, "title" : "The Devil to Pay!", "type" : "movie", ... }
{ "_id" : { "$oid" : "..." }, "title" : "Traffic in Souls", "type" : "movie", ... }
{ "_id" : { "$oid" : "..." }, "title" : "Now or Never", "type" : "movie", ... }
{ "_id" : { "$oid" : "..." }, "title" : "High and Dizzy", "type" : "movie", ... }
...

Los operadores de comparación evalúan el valor de un campo de documento con respecto a un valor especificado en el filtro de consulta. A continuación, se muestra una lista de operadores de comparación comunes:

  • $gt: Mayor que

  • $lte: Menor o igual a

  • $ne:No es igual

Para ver una lista completa de operadores de comparación, consulte la guía Operadores de consulta de comparación en el manual de MongoDB Server.

El siguiente ejemplo especifica un operador de comparación en un filtro de query como un parámetro de la función mongoc_collection_find_with_opts(). El código devuelve todos los documentos en los que el valor del campo year es mayor que 2015.

const bson_t *doc;
bson_t *filter = BCON_NEW("year", "{", "$gt", BCON_INT32(2015), "}");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : ..., "title" : "The Masked Saint", "year" : { "$numberInt" : "2016" }, ... }

Los operadores lógicos vinculan documentos mediante la lógica aplicada a los resultados de dos o más conjuntos de expresiones. A continuación, se muestra una lista de operadores lógicos:

  • $and, que devuelve todos los documentos que coinciden con las condiciones de todas las cláusulas

  • $or, que devuelve todos los documentos que coinciden con las condiciones de una cláusula

  • $nor, que devuelve todos los documentos que no coinciden con las condiciones de ninguna cláusula

  • $not, que devuelve todos los documentos que no coinciden con la expresión

Para obtener más información sobre los operadores lógicos, consulte la guía Operadores de consulta lógica en el manual del servidor MongoDB.

El siguiente ejemplo especifica un operador lógico en un filtro de consulta como parámetro de la mongoc_collection_find_with_opts() función. El código devuelve todos los documentos cuyo valor del year campo sea 1983 1985o.

const bson_t *doc;
bson_t *filter = BCON_NEW(
"$or", "[",
"{", "year", BCON_INT64(1983), "}",
"{", "year", BCON_INT64(1985), "}",
"]"
);
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : ..., "title" : "Amityville 3-D", "year" : { "$numberInt" : "1983" }, ... }
{ "_id" : ..., "title" : "Barefoot Gen", "year" : { "$numberInt" : "1983" }, ... }
{ "_id" : ..., "title" : "Betrayal", "year" : { "$numberInt" : "1983" }, ... }
{ "_id" : ..., "title" : "You're a Good Man, Charlie Brown", "year" : { "$numberInt" : "1985" }, ... }
{ "_id" : ..., "title" : "Yes: 9012 Live", "year" : { "$numberInt" : "1985" }, ... }
...

Los operadores de matriz buscan coincidencias de documentos según el valor o la cantidad de elementos en un campo de matriz. A continuación, se muestra una lista de operadores de matriz disponibles:

  • $all, que devuelve documentos con matrices que contienen todos los elementos de la consulta

  • $elemMatch, que devuelve documentos si un elemento en su campo de matriz coincide con todas las condiciones de la consulta

  • $size, que devuelve todos los documentos con matrices de un tamaño especificado

Para obtener más información sobre los operadores de matriz, consulte la guía Operadores de consulta de matriz en el manual del servidor MongoDB.

El siguiente ejemplo especifica un operador de arreglo en un filtro de query como parámetro para la función mongoc_collection_find_with_opts(). El código devuelve todos los documentos en los que el valor del campo de arreglo genres contiene exactamente 2 elementos.

const bson_t *doc;
bson_t *filter = BCON_NEW("genres", "{", "$size", BCON_INT32(2), "}");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : ..., "genres" : [ "Comedy", "Romance" ], "title" : "The Devil to Pay!", ... }
{ "_id" : ..., "genres" : [ "Crime", "Drama" ], "title" : "Traffic in Souls", ... }
{ "_id" : ..., "genres" : [ "Comedy", "Short" ], "title" : "High and Dizzy", ... }
{ "_id" : ..., "genres" : [ "Comedy", "Short" ], "title" : "Now or Never", ... }
{ "_id" : ..., "genres" : [ "Drama", "Romance" ], "title" : "A Woman of Paris: A Drama of Fate", ... }
...

Los operadores de elementos consultan datos según la presencia o el tipo de un campo.

Para obtener más información sobre los operadores de elementos, consulte la guía Operadores de consulta de elementos en el manual de MongoDB Server.

El siguiente ejemplo especifica el operador $exists en un filtro de consulta como parámetro de la función mongoc_collection_find_with_opts(). El código devuelve todos los documentos que tienen un campo num_mflix_comments.

const bson_t *doc;
bson_t *filter = BCON_NEW("num_mflix_comments", "{", "$exists", BCON_BOOL(true), "}");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : ..., "num_mflix_comments" : { "$numberInt" : "0" }, "title" : "The Park Is Mine", ...}
{ "_id" : ..., "num_mflix_comments" : { "$numberInt" : "1" }, "title" : "The Good Father", ... }
{ "_id" : ..., "num_mflix_comments" : { "$numberInt" : "0" }, "title" : "Alpine Fire", ... }
{ "_id" : ..., "num_mflix_comments" : { "$numberInt" : "1" }, "title" : "Huang jia shi jie", ... }
{ "_id" : ..., "num_mflix_comments" : { "$numberInt" : "0" }, "title" : "Twenty Years Later", ... }
...

Los operadores de evaluación devuelven datos basados ​​en evaluaciones de campos individuales o de los documentos de toda la colección.

La siguiente es una lista de operadores de evaluación comunes:

  • $text, que realiza una búsqueda de texto en los documentos

  • $regex, que devuelve documentos que coinciden con una expresión regular especificada

  • $mod, que realiza una operación de módulo sobre el valor de un campo y devuelve documentos donde el resto es un valor especificado

Para ver una lista completa de operadores de evaluación, consulte la guía Operadores de consulta de evaluación en el manual de MongoDB Server.

El siguiente ejemplo especifica un operador de evaluación en un filtro de consulta como parámetro de la función mongoc_collection_find_with_opts(). El código utiliza una expresión regular para devolver todos los documentos cuyo valor del campo title tenga al menos dos caracteres "p" consecutivos.

const bson_t *doc;
bson_t *filter = BCON_NEW("title", "{", "$regex", BCON_UTF8("p{2,}"), "}");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
mongoc_cursor_destroy(results);
bson_destroy(filter);
{ "_id" : ..., "title" : "He Who Gets Slapped", ... }
{ "_id" : ..., "title" : "David Copperfield", ... }
{ "_id" : ..., "title" : "Applause", ... }
{ "_id" : ..., "title" : "Skippy", ... }
{ "_id" : ..., "title" : "This Happy Breed", ... }
...

Para obtener más información sobre cómo consultar documentos, consulte la guía Consultar documentos en el manual de MongoDB Server.

Para obtener más información sobre el uso del controlador C para recuperar documentos, consulte Buscar documentos.

Para obtener más información sobre la mongoc_collection_find_with_opts() función, consulte la documentación de la API.

Volver

Operaciones de query

En esta página