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

Especifique documentos a serem devolvidos

Nesta página

  • Visão geral
  • Dados de amostra
  • Limite
  • Sort
  • Ignorar
  • Combinar Limite, Classificar e Ignorar
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender a especificar quais documentos retornar de uma operação de leitura usando as seguintes operações:

  • limit: especifica o número máximo de documentos para retornar de uma query

  • sort: especifica a ordem de classificação para os documentos devolvidos

  • skip: especifica o número de documentos a ignorar antes de retornar os resultados da query

Os exemplos neste guia utilizam a coleção do restaurants no banco de dados de dados do sample_restaurants 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 .

Para especificar o número máximo de documentos retornados de uma operação de leitura, passe a opção limit para sua chamada de função mongoc_collection_find_with_opts().

O exemplo a seguir encontra todos os restaurantes que têm um cuisine valor de campo de "Italian" e limita os resultados a 5 documentos:

const bson_t *doc;
bson_t *filter = BCON_NEW ("cuisine", BCON_UTF8 ("Italian"));
bson_t *opts = BCON_NEW ("limit", BCON_INT64 (5));
mongoc_cursor_t *results =
mongoc_collection_find_with_opts (collection, filter, opts, NULL);
while (mongoc_cursor_next (results, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (filter);
bson_destroy (opts);
mongoc_cursor_destroy (results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "V & T Restaurant", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Mimis Restaurant & Bar", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Venice Restaurant", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Areo Restaurant", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Tre Giovani Pizza & Pasta", ... }

Dica

O exemplo anterior retorna os cinco primeiros documentos retornados pela query em ordem natural. A seção seguinte descreve como devolver os documentos em uma ordem de classificação especificada.

Para retornar documentos em uma ordem especificada, use a opção sort. A opção sort usa uma direção de classificação como parâmetro. Para especificar a direção de classificação, passe um 1 para uma classificação ascendente ou um -1 para uma classificação decrescente. O crescente classifica os valores de ordem do mais baixo para o mais alto, e o decrescente classifica os valores de ordem do mais alto para o mais baixo.

O exemplo a seguir retorna todos os documentos com um valor de campo cuisine de "Italian", classificado pelo valor do campo name em ordem crescente:

const bson_t *doc;
bson_t *filter = BCON_NEW ("cuisine", BCON_UTF8 ("Italian"));
bson_t *opts = BCON_NEW ("sort", "{", "name", BCON_INT32 (1), "}");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts (collection, filter, opts, NULL);
while (mongoc_cursor_next (results, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (filter);
bson_destroy (opts);
mongoc_cursor_destroy (results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "(Lewis Drug Store) Locanda Vini E Olii", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "101 Restaurant And Bar", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "44 Sw Ristorante & Bar", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "900 Park", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "A Voce", ... }
...

Para ignorar um número especificado de documentos antes de retornar os resultados da consulta, use a opção skip e passe o número de documentos a serem ignorados. A opção skip ignora o número especificado de documentos nos resultados da query e, em seguida, retorna o restante.

O exemplo a seguir retorna todos os documentos que têm um valor de campo cuisine de "Italian" e ignora os primeiros 10 documentos:

const bson_t *doc;
bson_t *filter = BCON_NEW ("cuisine", BCON_UTF8 ("Italian"));
bson_t *opts = BCON_NEW ("skip", BCON_INT64 (10));
mongoc_cursor_t *results =
mongoc_collection_find_with_opts (collection, filter, opts, NULL);
while (mongoc_cursor_next (results, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (filter);
bson_destroy (opts);
mongoc_cursor_destroy (results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Trattoria Alba", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Da Umberto Restaurant", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "La Strada Restaurant", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Pasta Lovers Trattoria", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Nanni Restaurant", ... }
...

Você pode combinar as opções limit, sort e skip em uma única operação. Isso permite que você defina um número máximo de documentos classificados para retornar, ignorando um número específico de documentos antes de retornar.

O exemplo a seguir retorna documentos com o valor de campo cuisine de "Italian". Os resultados são classificados em ordem alfabética, ignorando os primeiros 10 documentos e limitando os resultados a 5 documentos:

const bson_t *doc;
bson_t *filter = BCON_NEW ("cuisine", BCON_UTF8 ("Italian"));
bson_t *opts = BCON_NEW ("limit", BCON_INT64 (5),
"skip", BCON_INT64 (10),
"sort", "{", "name", BCON_INT32 (1), "}");
mongoc_cursor_t *results =
mongoc_collection_find_with_opts (collection, filter, opts, NULL);
while (mongoc_cursor_next (results, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (filter);
bson_destroy (opts);
mongoc_cursor_destroy (results);
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acqua", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acqua Restaurant", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acqua Santa", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acquista Trattoria", ... }
{ "_id" : { "$oid" : "..." }, "cuisine" : "Italian", "name" : "Acquolina Catering", ... }

Observação

A ordem em que você chama esses métodos não altera os documentos que são devolvidos. O driver reordena automaticamente as chamadas para executar primeiro as operações de classificação e skip e, em seguida, a operação de limite.

Para mais informações sobre como especificar uma query, consulte Especificar uma Query.

Para obter mais informações sobre como recuperar documentos, consulte Recuperar dados.

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

Voltar

Especifique campos a serem retornados