Menu Docs
Página inicial do Docs
/ / /
Driver C++
/

Insira documentos

Nesta página

  • Visão geral
  • Dados de amostra
  • O campo _id
  • Inserir um documento
  • Insira vários documentos
  • Modificar comportamento de inserção
  • Exemplo
  • Informações adicionais
  • Documentação da API

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.

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 .

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 .

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")));

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);

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

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);

Para obter exemplos de código executáveis de inserção de documentos com o driver C++ , consulte Gravar dados no MongoDB.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Gravar dados