Insira documentos
Nesta página
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 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:
Você mesmo pode definir este campo para cada documento, garantindo que cada valor do campo
_id
seja ú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 |
---|---|
bypass_document_validation | If set to true , allows the write to opt out of
document-level validation.Defaults to false .Type: bool |
write_concern | Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongocxx::write_concern |
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.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: bsoncxx::types::bson_value::view_or_value |
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: