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

Ler dados do MongoDB

Nesta página

  • Visão geral
  • Aplicativo de amostra
  • Encontrar documentos
  • Contagem de documentos em uma coleção
  • Contagem de documentos retornados de uma query
  • Contagem estimada de documentos
  • Retrieve Distinct Values
  • Monitorar alterações de dados

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.

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:

  1. Verifique se o driver C está instalado.

  2. Copie o seguinte código e cole-o em um novo arquivo .c .

  3. Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.

1#include <bson/bson.h>
2#include <mongoc/mongoc.h>
3#include <stdio.h>
4
5int
6main (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.

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 .

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.

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.

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.

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 .

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 .

Voltar

Armazenar arquivos grandes