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

Insira documentos

Nesta página

  • Visão geral
  • Dados de amostra
  • O campo _id
  • Inserir um documento
  • Insira vários documentos
  • Modificar comportamento de inserção
  • Exemplo
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como usar o driver C para adicionar documentos a uma coleção MongoDB realizando operações de inserção .

Uma operação de inserção insere um ou mais documentos em uma coleção MongoDB . Você pode executar uma operação de inserção utilizando as seguintes funções:

  • mongoc_collection_insert_one() função para inserir um único documento

  • mongoc_collection_insert_many() função para inserir um ou mais documentos

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 .

Em uma coleção MongoDB, cada documento deve conter um campo _id com um valor de campo único.

O MongoDB permite gerenciar este campo de duas maneiras:

  • Defina o campo _id para cada documento por conta própria, garantindo que cada valor seja único.

  • Permita que o acionador gere automaticamente valores de bson_oid_t únicos para cada campo de documento _id .

A menos que você possa garantir exclusividade, recomendamos deixar o driver gerar automaticamente os valores de _id .

Observação

Os valores duplicados de _id violam restrições de índice único , o que faz com que o driver retorne um erro mongoc_bulkwriteexception_t .

Para saber mais sobre o campo _id, consulte o guia Índices únicos no manual do MongoDB Server .

Para saber mais sobre a estrutura e as regras de documentos, consulte o guia Documentos no manual do MongoDB Server .

Para adicionar um único documento a uma collection MongoDB , chame a função mongoc_collection_insert_one() e passe os seguintes parâmetros:

  • Coleção na qual você está inserindo documentos

  • Documento a inserir

  • Opções para personalizar a operação, ou NULL

  • Ponteiro para armazenamento substituível que conterá os resultados da operação, ou NULL

  • Localização de um valor de erro, ou NULL

O exemplo a seguir insere um documento na coleção restaurants :

bson_t *document = BCON_NEW ("name", BCON_UTF8 ("Mongo's Burgers"));
bson_error_t error;
if (!mongoc_collection_insert_one (collection, document, NULL, NULL, &error)) {
fprintf (stderr, "Insert one operation failed: %s\n", error.message);
}
bson_destroy (document);

Para adicionar vários documentos a uma collection do MongoDB , chame a função mongoc_collection_insert_many() e passe os seguintes parâmetros:

  • Coleção na qual você está inserindo documentos

  • Array de ponteiros para os documentos que você deseja inserir

  • Número de documentos a inserir

  • Opções para personalizar a operação, ou NULL

  • Ponteiro para armazenamento substituível que conterá os resultados da operação, ou NULL

  • Localização de um valor de erro, ou NULL

O exemplo a seguir insere dois documentos na collection restaurants :

size_t num_docs = 2;
bson_t *docs[num_docs];
docs[0] = BCON_NEW ("name", BCON_UTF8 ("Mongo's Burgers"));
docs[1] = BCON_NEW ("name", BCON_UTF8 ("Mongo's Pizza"));
bson_error_t error;
if (!mongoc_collection_insert_many (collection, (const bson_t **) docs, num_docs, NULL, NULL, &error)) {
fprintf (stderr, "Insert many operation failed: %s\n", error.message);
}
bson_destroy (docs[0]);
bson_destroy (docs[1]);

Você pode modificar o comportamento das funções mongoc_collection_insert_one() e mongoc_collection_insert_many() passando um documento BSON que especifica os valores das opções. A tabela a seguir descreve algumas opções que você pode definir no documento:

Opção
Descrição

bypassDocumentValidation

If set to true, allows the write operation to opt out of document-level validation.
Defaults to false.
Type: bool

writeConcern

Sets the write concern for the operation.
Defaults to the write concern of the namespace.
Type: mongoc_write_concern_t

ordered

If set to true, the operation stops inserting documents when one insert fails. If false, the operation continues to insert the remaining documents when one insert fails. You cannot pass this option to the mongoc_collection_insert_one() function.
Defaults to true.
Type: bool

comment

A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
Type: bson_value_t

O código abaixo usa a função mongoc_collection_insert_many() para inserir três novos documentos em uma collection. Como o campo bypassDocumentValidation está definido como true, essa operação de inserção ignora a validação em nível de documento:

size_t num_docs = 3;
bson_t *docs[num_docs];
docs[0] = BCON_NEW ("name", BCON_UTF8("Mongo's Burgers"));
docs[1] = BCON_NEW ("name", BCON_UTF8("Mongo's Pizza"));
docs[2] = BCON_NEW ("name", BCON_UTF8("Mongo's Tacos"));
bson_t opts;
bson_init (&opts);
bson_append_bool (&opts, "bypassDocumentValidation", -1, true);
bson_error_t error;
if (!mongoc_collection_insert_many (collection, (const bson_t **) docs, num_docs, &opts, NULL, &error)) {
fprintf (stderr, "Insert many operation failed: %s\n", error.message);
}
bson_destroy (docs[0]);
bson_destroy (docs[1]);
bson_destroy (docs[2]);
bson_destroy (&opts);

Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API:

Voltar

Gravar dados