Menu Docs
Página inicial do Docs
/ / /
Driver C
/

Especificar uma query

Nesta página

  • Visão geral
  • Dados de amostra
  • Correspondência exata
  • Operadores de comparação
  • Operadores lógicos
  • Operadores de array
  • Operadores de elementos
  • Operadores de avaliação
  • Informações adicionais
  • Documentação da API

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.

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 .

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", ... }
...

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" }, ... }

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" }, ... }
...

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", ... }
...

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", ... }
...

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:

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", ... }
...

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.

Para saber mais sobre a mongoc_collection_find_with_opts() função, consulte a documentação API.

Voltar

Ler dados do MongoDB