Visão geral
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 documentomongoc_collection_insert_many()função para inserir um ou mais documentos
Dados de amostra
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 .
O campo _id
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
_idpara 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 .
Inserir um documento
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
NULLPonteiro para armazenamento substituível que conterá os resultados da operação, ou
NULLLocalizaçã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);
Insira vários documentos
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
NULLPonteiro para armazenamento substituível que conterá os resultados da operação, ou
NULLLocalizaçã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]);
Modificar comportamento de inserção
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 |
|---|---|
| If set to true, allows the write operation to opt out of
document-level validation.Defaults to false.Type: bool |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongoc_write_concern_t |
| 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 |
| 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 |
Exemplo
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);
Informações adicionais
Documentação da API
Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API: