Insira documentos
Visão geral
Neste guia, você aprenderá como inserir documentos no MongoDB.
Você pode usar o MongoDB para recuperar, atualizar e excluir informações. Para uma dessas operações, tais informações, como perfis de usuário e pedidos, precisam existir no MongoDB. Para que elas existam, você precisa primeiro realizar uma operação de inserção.
Uma operação de inserção insere um ou mais documentos em uma coleção MongoDB. O driver Node.js fornece os seguintes métodos para executar operações de inserção :
insertOne()
insertMany()
bulkWrite()
Dica
Laboratório interativo
Esta página inclui um breve laboratório interativo que demonstra como inserir dados usando o método insertOne()
. Você pode concluir este laboratório diretamente na janela do seu navegador sem instalar o MongoDB ou um editor de código.
Para iniciar o laboratório, clique no botão Open Interactive Tutorial na parte superior da página. Para expandir o laboratório para um formato de tela inteira, clique no botão de tela inteira (⛶) no canto superior direito do painel do laboratório.
As seções a seguir focam em insertOne()
e insertMany()
. Para ver um exemplo de como usar o método bulkWrite()
, consulte nosso exemplo de operações em massa executáveis.
Uma observação sobre _id
Ao inserir um documento, o MongoDB impõe uma restrição nos seus documentos por padrão. Cada documento deve conter um campo _id
exclusivo.
Há duas maneiras de gerenciar este campo:
Você mesmo pode gerenciar esse campo, garantindo que cada valor usado seja exclusivo.
Você pode permitir que o driver gere automaticamente valores únicos de
ObjectId
com a fábrica de chaves primárias.
A menos que você tenha fornecido garantias sólidas de exclusividade, recomendamos que deixe o driver gerar automaticamente os valores de _id
.
Observação
Os valores _id
duplicados violam restrições de índice único, resultando em um WriteError
.
Para obter informações adicionais sobre _id
, consulte Entrada manual do servidor em Índices únicos.
Inserir um único documento
Use o método insertOne()
quando quiser inserir um único documento.
Em uma inserção bem-sucedida, o método retorna uma instância do InsertOneResult
representando o _id
do novo documento.
Exemplo
O exemplo a seguir usa o método insertOne()
para inserir um novo documento na coleção myDB.pizzaMenu
:
const myDB = client.db("myDB"); const myColl = myDB.collection("pizzaMenu"); const doc = { name: "Neapolitan pizza", shape: "round" }; const result = await myColl.insertOne(doc); console.log( `A document was inserted with the _id: ${result.insertedId}`, );
Sua saída deve ser semelhante a esta:
A document was inserted with the _id: 60c79c0f4cc72b6bb31e3836
Para obter informações adicionais sobre as classes e métodos mencionados nesta seção, consulte os seguintes recursos:
Documentação da API do insertOne()
Documentação da API sobre InsertOneResult
Entrada manual do servidor em insertOne()
Exemplo de inserção de documento executável
Insira vários documentos
Use o método insertMany()
quando quiser inserir vários documentos. Este método insere documentos na ordem especificada até ocorrer uma exceção, se houver.
Por exemplo, suponha que você queira inserir os seguintes documentos:
{ "_id": 1, "color": "red" } { "_id": 2, "color": "purple" } { "_id": 1, "color": "yellow" } { "_id": 3, "color": "blue" }
Se você tentar inserir esses documentos, um WriteError
ocorrerá no terceiro documento, e os documentos anteriores ao erro serão inseridos na sua collection.
Observação
Use um bloco try-catch para obter uma confirmação de documentos processados com êxito antes que o erro ocorra:
const myDB = client.db("myDB"); const myColl = myDB.collection("colors"); try { const docs = [ { "_id": 1, "color": "red"}, { "_id": 2, "color": "purple"}, { "_id": 1, "color": "yellow"}, { "_id": 3, "color": "blue"} ]; const insertManyresult = await myColl.insertMany(docs); let ids = insertManyresult.insertedIds; console.log(`${insertManyresult.insertedCount} documents were inserted.`); for (let id of Object.values(ids)) { console.log(`Inserted a document with id ${id}`); } } catch(e) { console.log(`A MongoBulkWriteException occurred, but there are successfully processed documents.`); let ids = e.result.result.insertedIds; for (let id of Object.values(ids)) { console.log(`Processed a document with id ${id._id}`); } console.log(`Number of documents inserted: ${e.result.result.nInserted}`); }
O resultado consiste em documentos que MongoDB pode processar e deve parecer algo assim:
A MongoBulkWriteException occurred, but there are successfully processed documents. Processed a document with id 1 Processed a document with id 2 Processed a document with id 1 Processed a document with id 3 Number of documents inserted: 2
Dentro da sua collection, verá os seguintes documentos:
{ "_id": 1, "color": "red" } { "_id": 2, "color": "purple" }
Ao fazer a inserção corretamente, o método gera uma instância InsertManyResult
representando o número de documentos inseridos e o _id
do novo documento.
Exemplo
O exemplo a seguir usa o método insertMany()
para inserir três novos documentos na collection myDB.pizzaMenu
:
const myDB = client.db("myDB"); const myColl = myDB.collection("pizzaMenu"); const docs = [ { name: "Sicilian pizza", shape: "square" }, { name: "New York pizza", shape: "round" }, { name: "Grandma pizza", shape: "square" } ]; const insertManyresult = await myColl.insertMany(docs); let ids = insertManyresult.insertedIds; console.log(`${insertManyresult.insertedCount} documents were inserted.`); for (let id of Object.values(ids)) { console.log(`Inserted a document with id ${id}`); }
Sua saída deve ser semelhante a esta:
3 documents were inserted. Inserted a document with id 60ca09f4a40cf1d1afcd93a2 Inserted a document with id 60ca09f4a40cf1d1afcd93a3 Inserted a document with id 60ca09f4a40cf1d1afcd93a4
Para obter informações adicionais sobre as classes e métodos mencionados nesta seção, consulte os seguintes recursos:
Documentação da API do insertMany()
Documentação da API sobrem InsertManyResult
Documentação da API sobre PkFactory
Entrada manual do servidor em insertMany()
Exemplo de inserção de vários documentos executáveis