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 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.
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
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);
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
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]);
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 |
|---|---|
| Se definido como |
| Define o write concern para a operação. |
| Se definido como |
| 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. |
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: