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 usando o método insert_one() para inserir um único documento ou o método insert_many() para inserir um ou mais documentos.
Dados de amostra
Os exemplos neste guia usam a collection sample_restaurants.restaurants dos conjuntos de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação C++ , instancie um client que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis db e collection :
auto db = client["sample_restaurants"]; auto collection = db["restaurants"];
Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.
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:
Você mesmo pode definir este campo para cada documento, garantindo que cada valor do campo
_idseja único.Você pode permitir que o acionador gere automaticamente valores de
ObjectIdúnicos para cada 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 mongocxx::bulk_write_exception .
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 coleção MongoDB, chame o método insert_one() e passe o documento que você deseja adicionar.
O exemplo a seguir insere um documento na coleção restaurants :
auto result = collection.insert_one(make_document(kvp("name", "Mongo's Burgers")));
Insira vários documentos
Para adicionar vários documentos a uma collection do MongoDB , chame o método insert_many() e passe um vetor que armazene os documentos que você deseja adicionar.
O exemplo a seguir insere dois documentos na collection restaurants :
std::vector<bsoncxx::document::value> restaurants; restaurants.push_back(make_document(kvp("name", "Mongo's Burgers"))); restaurants.push_back(make_document(kvp("name", "Mongo's Pizza"))); auto result = collection.insert_many(restaurants);
Modificar comportamento de inserção
Você pode modificar o comportamento dos métodos insert_one() e insert_many() passando uma instância da classe mongocxx::options::insert como parâmetro opcional. A tabela seguinte descreve os campos que você pode definir em uma instância do mongocxx::options::insert :
Campo | Descrição |
|---|---|
| |
| Define a preocupação de gravação para a operação. |
| Se |
| Um comentário a ser anexado à operação. Para obter mais informações, consulte o guia de campos de comando de inserção no manual do MongoDB Server . |
Exemplo
O código a seguir usa o método insert_many() para inserir três novos documentos em uma coleção. Como o campo bypass_document_validation está definido como true em uma instância mongocxx::options::insert , essa operação de inserção ignora a validação em nível de documento:
std::vector<bsoncxx::document::value> docs; docs.push_back(make_document(kvp("name", "Mongo's Burgers"))); docs.push_back(make_document(kvp("name", "Mongo's Pizza"))); docs.push_back(make_document(kvp("name", "Mongo's Tacos"))); mongocxx::options::insert opts; opts.bypass_document_validation(true); auto result = collection.insert_many(docs, opts);
Informações adicionais
Para obter exemplos de código executáveis de inserção de documentos com o driver C++ , consulte Gravar dados no MongoDB.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: