Especificar uma query
Nesta página
Visão geral
Neste guia, você pode aprender como especificar uma query usando o driver C.
Você pode definir um filtro de query para recuperar documentos específicos de uma collection ao executar uma query. Um filtro de query é uma expressão que especifica os critérios de pesquisa que o MongoDB usa para corresponder a documentos em uma operação de leitura ou gravação. Ao definir um filtro de query, você pode direcionar o driver para pesquisar documentos com uma correspondência exata à sua query, ou você pode compor filtros de query para expressar critérios de correspondência mais complexos.
Dados de amostra
Os exemplos neste guia utilizam a coleção do movies
no banco de dados de dados do sample_mflix
a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Correspondência exata
Consultas de valor literal retornam documentos com uma correspondência exata ao seu filtro de consulta.
O exemplo seguinte especifica um filtro de consulta como um parâmetro para a função mongoc_collection_find_with_opts()
. O código retorna todos os documentos em que o valor do campo type
é "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", ... } ...
Operadores de comparação
Os operadores de comparação avaliam um valor de campo de documento em relação a um valor especificado em seu filtro de query. Veja a seguir uma lista de operadores de comparação comuns:
$gt
: Maior que$lte
: Menor ou igual$ne
: Diferente
Para visualizar uma lista completa de operadores de comparação, consulte o guia Operadores de query de comparação no manual do MongoDB Server .
O exemplo a seguir especifica um operador de comparação em um filtro de consulta como um parâmetro para a função mongoc_collection_find_with_opts()
. O código retorna todos os documentos em que o valor do campo year
é maior 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" }, ... }
Operadores lógicos
Os operadores lógicos correspondem aos documentos usando lógica aplicada aos resultados de dois ou mais conjuntos de expressões. Veja a seguir uma lista de operadores lógicos:
$and
, que retorna todos os documentos que correspondem às condições de todas as cláusulas$or
, que retorna todos os documentos que correspondem às condições de uma cláusula$nor
, que retorna todos os documentos que não correspondem às condições de nenhuma cláusula$not
, que retorna todos os documentos que não correspondem à expressão
Para saber mais sobre operadores lógicos, consulte o guia Operadores lógicos de query no manual do MongoDB Server .
O exemplo seguinte especifica um operador lógico em um filtro de query como um parâmetro para a mongoc_collection_find_with_opts()
função. O código retorna todos os documentos em que o valor do year
campo é 1983
ou 1985
.
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" }, ... } ...
Operadores de array
Os operadores de array correspondem aos documentos com base no valor ou na quantidade de elementos em um campo de array. A seguir está uma lista dos operadores de array disponíveis:
$all
, que retorna documentos com arrays que contêm todos os elementos da query$elemMatch
, que retorna documentos se um elemento em seu campo de array corresponder a todas as condições na query$size
, que retorna todos os documentos com arrays de um tamanho especificado
Para saber mais sobre operadores de array, consulte o guia Operadores de query de array no manual do MongoDB Server .
O exemplo seguinte especifica um operador de array em um filtro de query como um parâmetro para a função mongoc_collection_find_with_opts()
. O código retorna todos os documentos em que o valor do campo de array genres
contém exatamente 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", ... } ...
Operadores de elementos
Os operadores de elemento consultam os dados com base na presença ou tipo de campo.
Para saber mais sobre os operadores de elementos, consulte o guia Operadores de query de elementos no manual do MongoDB Server .
O exemplo seguinte especifica o operador $exists
em um filtro de query como um parâmetro para a função mongoc_collection_find_with_opts()
. O código retorna todos os documentos que têm um 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", ... } ...
Operadores de avaliação
Os operadores de avaliação retornam dados com base em avaliações de campos individuais ou documentos de toda a coleção.
Veja a seguir uma lista de operadores de avaliação comuns:
$text
, que executa um Atlas Search de texto nos documentos$regex
, que retorna documentos que correspondem a uma expressão regular especificada$mod
, que executa uma operação de módulo no valor de um campo e retorna documentos em que o restante é um valor especificado
Para visualizar uma lista completa de operadores de avaliação, consulte o guia Operadores de query de avaliação no manual do MongoDB Server .
O exemplo seguinte especifica um operador de avaliação em um filtro de query como um parâmetro para a função mongoc_collection_find_with_opts()
. O código utiliza uma expressão regular para retornar todos os documentos em que o valor do campo title
tenha pelo menos dois "p"
caracteres 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", ... } ...
Informações adicionais
Para saber mais sobre como query documentos, consulte o guia Consultar documentos no manual do MongoDB Server .
Para saber mais sobre como usar o driver C para recuperar documentos, consulte Recuperar dados.
Documentação da API
Para saber mais sobre a mongoc_collection_find_with_opts()
função, consulte a documentação API.