Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Insira documentos

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 do sample_restaurants a partir do conjunto 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 MongoDB Get Started.

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

Use a seguinte sintaxe para inserir um documento:

bson_t *document = BCON_NEW("<field name>", BCON_UTF8("<value>"));
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);

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

Use a seguinte sintaxe para inserir vários documentos:

size_t num_docs = 2;
bson_t *docs[num_docs];
docs[0] = BCON_NEW("<field name>", BCON_UTF8("<value>"));
docs[1] = BCON_NEW("<field name>", BCON_UTF8("<value>"));
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]);

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

Se definido como true, permite que a operação de gravação desative a validação em nível de documento.
Padrão para false.
Tipo: bool

writeConcern

Define o write concern para a operação.
padrão para o write concern do namespace.
Tipo: mongoc_write_concern_t

ordered

Se definido como true, a operação interrompe a inserção de documentos quando uma inserção falha. Se false, a operação continuará a inserir os documentos restantes quando uma inserção falhar. Você não pode passar esta opção para a função mongoc_collection_insert_one().
O padrão é true.
Tipo: bool

comment

Um comentário a ser anexado à operação. Para obter mais informações, consulte o guia inserir campos de comando no manual do MongoDB Server.
Tipo: 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: