Especifique documentos a serem devolvidos
Nesta página
Visão geral
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 querysort
: especifica a ordem de classificação para os documentos devolvidosskip
: especifica o número de documentos a ignorar antes de retornar os resultados da query
Dados de amostra
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 .
Limite
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.
Sort
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", ... } ...
Ignorar
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", ... } ...
Combinar Limite, Classificar e Ignorar
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.
Informações adicionais
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.
Documentação da API
Para saber mais sobre a mongoc_collection_find_with_opts()
função, consulte a documentação API.