Ler dados do MongoDB
Nesta página
Visão geral
Nesta página, você pode ver exemplos de código copiáveis que mostram funções comuns que você pode usar para recuperar documentos usando o driver C.
Dica
Para saber mais sobre qualquer uma das funções mostradas nesta página, consulte o link para um guia relevante fornecido em cada seção.
Para usar um exemplo desta página, copie o exemplo de código para oaplicativo de amostra ou para seu próprio aplicativo. Certifique-se de substituir todos os espaços reservados nos exemplos de código, como <connection string URI>
, pelos valores relevantes para sua implantação do MongoDB.
Aplicativo de amostra
Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:
Verifique se o driver C está instalado.
Copie o seguinte código e cole-o em um novo arquivo
.c
.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
1 2 3 4 5 int 6 main (void) 7 { 8 mongoc_client_t *client; 9 mongoc_collection_t *collection; 10 char *str; 11 bson_error_t error; 12 13 mongoc_init (); 14 15 client = mongoc_client_new ("<connection string URI>"); 16 collection = mongoc_client_get_collection (client, "<database name>", "collection name"); 17 18 // Start example code here 19 20 // End example code here 21 22 mongoc_collection_destroy (collection); 23 mongoc_client_destroy (client); 24 mongoc_cleanup (); 25 26 return EXIT_SUCCESS; 27 }
Dica
Para obter instruções sobre como instalar o driver C, consulte Download e instalação no guia de introdução.
Encontrar documentos
O exemplo a seguir recupera uma lista de documentos que correspondem aos critérios especificados pelo filtro fornecido:
bson_t *query = bson_new (); // Add fields to query here mongoc_cursor_t* results = mongoc_collection_find_with_opts (collection, query, NULL, NULL); const bson_t *doc; while (mongoc_cursor_next (results, &doc)) { str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } mongoc_cursor_destroy (results); bson_destroy (query);
Para saber mais sobre a função mongoc_collection_find_with_opts()
, consulte o guia Localizar documentos .
Contagem de documentos em uma coleção
O exemplo a seguir retorna o número de documentos na coleção especificada:
bson_t *query = bson_new (); int64_t count = mongoc_collection_count_documents (collection, query, NULL, NULL, NULL, &error); printf ("%" PRId64 "\n", count); bson_destroy (query);
Para saber mais sobre a função mongoc_collection_count_documents()
, consulte a seção Recuperar uma contagem precisa do guia Contagem de documentos.
Contagem de documentos retornados de uma query
O exemplo a seguir retorna o número de documentos que correspondem aos critérios especificados pelo filtro fornecido:
bson_t *query = bson_new (); // Add fields to query here int64_t count = mongoc_collection_count_documents (collection, query, NULL, NULL, NULL, &error); printf ("%" PRId64 "\n", count); bson_destroy (query);
Para saber mais sobre a função mongoc_collection_count_documents()
, consulte a seção Recuperar uma contagem precisa do guia Contagem de documentos.
Contagem estimada de documentos
O exemplo a seguir retorna um número aproximado de documentos na collection especificada com base nos metadados da collection:
int64_t count = mongoc_collection_estimated_document_count (collection, NULL, NULL, NULL, &error); printf ("%" PRId64 "\n", count);
Para saber mais sobre a função mongoc_collection_estimated_document_count()
, consulte a seção Recuperar uma contagem estimada do guia Contagem de documentos.
Retrieve Distinct Values
O exemplo a seguir retorna todos os valores distintos do nome do campo especificado em uma determinada coleção:
bson_t reply; bson_t *command = BCON_NEW ("distinct", BCON_UTF8 ("<collection name>"), "key", BCON_UTF8 ("<field name>")); if (!mongoc_collection_read_command_with_opts (collection, command, NULL, NULL, &reply, &error)) { fprintf (stderr, "An error occurred: %s\n", error.message); } else { str = bson_as_canonical_extended_json (&reply, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy(&reply); bson_destroy(command);
Para saber mais sobre o comando distinct
, consulte o guia Recuperar valores de campo distintos .
Monitorar alterações de dados
O exemplo a seguir cria um change stream para uma determinada collection e imprime eventos de alteração subsequentes nessa collection:
mongoc_change_stream_t *change_stream; bson_t *pipeline = bson_new (); // Add stages to pipeline here const bson_t *doc; change_stream = mongoc_collection_watch (collection, pipeline, NULL); while (mongoc_change_stream_next (change_stream, &doc)) { str = bson_as_canonical_extended_json (doc, NULL); printf ("Change: %s\n", str); bson_free (str); } bson_destroy (pipeline); mongoc_change_stream_destroy (change_stream);
Para saber mais sobre a função mongoc_collection_watch()
, consulte o guia Monitorar alterações de dados .