Visão geral
Neste guia, você pode aprender como usar o driver C para localizar e recuperar documentos de uma coleção MongoDB usando operações de leitura. Você pode chamar a função mongoc_collection_find_with_opts() para recuperar documentos que correspondam a um conjunto de critérios especificados em um filtro de queries.
Dados de amostra
Os exemplos neste guia usam a coleção restaurants no banco de dados sample_restaurants dos conjuntos de dados de amostra do Atlas. Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.
Encontrar documentos
A mongoc_collection_find_with_opts() função utiliza um filtro de query e retorna todos os documentos correspondentes de uma collection. Um filtro de query é um documento que especifica os critérios que o driver usa para corresponder aos documentos da coleção.
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Exemplo de localização de documentos
O exemplo a seguir usa a função mongoc_collection_find_with_opts() para localizar todos os documentos nos quais o valor do campo cuisine é "Spanish":
bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Spanish")); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, NULL, NULL);
A operação mongoc_collection_find_with_opts() no exemplo anterior retorna um mongoc_cursor_t *, que você pode iterar usando a função mongoc_cursor_next() e um loop enquanto. O exemplo a seguir itera e imprime os resultados retornados na query anterior:
const bson_t *doc; bson_error_t error; while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } // Ensure we iterated through cursor without error if (mongoc_cursor_error(results, &error)) { fprintf(stderr, "Error getting results: %s\n", error.message); } mongoc_cursor_destroy(results); bson_destroy(filter);
Observação
Localizar todos os documentos
Para encontrar todos os documentos em uma coleção, passe um filtro vazio para a função mongoc_collection_find_with_opts():
bson_t *empty_filter = bson_new(); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, empty_filter, NULL, NULL); mongoc_cursor_destroy(results); bson_destroy(empty_filter);
Modificar comportamento de localização
Você pode modificar o comportamento da função mongoc_collection_find_with_opts() passando uma estrutura bson_t que contém as opções que você deseja configurar. A tabela a seguir descreve as opções comumente usadas para modificar query:
Opção | Descrição |
|---|---|
| Define as opções de agrupamento para a query. |
| Specifies a string to attach to the query. This can help you trace and interpret the operation in the server logs and in profile data. To learn more about query comments, see the cursor.comment() page in the MongoDB Server manual. |
| Especifica o índice a ser usado para a query. |
| Limita o número de documentos a serem retornados da query. |
| Define o tempo de execução máximo no servidor para esta operação. |
| Define o número de documentos a ignorar. |
| Define os critérios de classificação a serem aplicados à query. |
O exemplo seguinte utiliza as opções limit e maxTimeMS para limitar o número de documentos retornados pela query para 10 e definir um tempo máximo de execução de 10000 milissegundos na operação:
bson_t *filter = BCON_NEW("cuisine", BCON_UTF8("Spanish")); bson_t *opts = BCON_NEW("limit", BCON_INT32(10), "maxTimeMS", BCON_INT32(10000)); mongoc_cursor_t *results = mongoc_collection_find_with_opts(collection, filter, opts, NULL); mongoc_cursor_destroy(results); bson_destroy(filter); bson_destroy(opts);
Para obter uma lista completa de opções que modificam o comportamento do,mongoc_collection_find_with_opts() consulte a documentação do método find no manual do MongoDB Server .
Informações adicionais
Para saber mais sobre filtros de queries, consulte Especificar uma query.
Para exibir exemplos de código executáveis que recuperam documentos usando o driver C, consulte Ler dados.
Documentação da API
Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API: