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.
To use an example from this page, copy the code example into the sample application or your own application. Be sure to replace all placeholders in the code examples, such as <connection string URI>, with the relevant values for your MongoDB deployment.
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 char *str; 9 bson_error_t error; 10 11 mongoc_init(); 12 13 mongoc_client_t *client = mongoc_client_new("<connection string URI>"); 14 mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "collection name"); 15 16 // Start example code here 17 18 // End example code here 19 20 mongoc_collection_destroy(collection); 21 mongoc_client_destroy(client); 22 mongoc_cleanup(); 23 24 return EXIT_SUCCESS; 25 }
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)) { char *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 mongoc_collection_find_with_opts() função, 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 mongoc_collection_count_documents() função, 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 mongoc_collection_count_documents() função, 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 mongoc_collection_estimated_document_count() função, 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 { char *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 distinct comando, 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)) { char *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 mongoc_collection_watch() função, consulte o guia Monitorar alterações de dados.