Adicionando Dados ao MongoDB com Node.js
No tema anterior, abordamos alguns conceitos básicos sobre o MongoDB. Agora, vamos detalhar como adicionar e recuperar dados do banco de dados.
Para adicionar dados, podemos usar diversos métodos. Se precisamos adicionar um único objeto, utilizamos o método insertOne(). Para adicionar um conjunto de objetos, utilizamos o método insertMany().
Adicionando um Objeto
Para adicionar um único objeto, utilizamos o método insertOne(). Este método recebe como parâmetro o objeto a ser adicionado. Vamos analisar um exemplo:
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const user = { name: "Tom", age: 28 };
const result = await collection.insertOne(user);
console.log(result);
console.log(user);
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);No exemplo acima, criamos um objeto chamado user com os campos name e age. Em seguida, adicionamos este objeto à coleção users.
O método insertOne() retorna um objeto com informações sobre a operação realizada. No exemplo acima, imprimimos o resultado no console.
Resultado da execução do programa:
c:\node\mongoapp>node app
{
acknowledged: true,
insertedId: new ObjectId("6112a80ca8a25160d53d161a")
}
{name: "Tom", age: 28, _id: new ObjectId("6112a80ca8a25160d53d161a")}Podemos ver o resultado da operação, em particular, o identificador do objeto adicionado através da propriedade result.insertedId. Além disso, observamos que o objeto user recebeu uma propriedade adicional _id após ser adicionado ao banco de dados. Esta é uma identificação única atribuída pelo servidor.
Adicionando Vários Documentos
Agora, vamos utilizar o método insertMany(). Adicionaremos um conjunto de objetos e, para isso, modificaremos o arquivo da aplicação app.js:
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
const users = [
{ name: "Bob", age: 35 },
{ name: "Alice", age: 21 },
{ name: "Tom", age: 45 },
];
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const results = await collection.insertMany(users);
console.log(results);
console.log(users);
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);Assim como o insertOne, o método insertMany() recebe como parâmetro os dados a serem adicionados, no caso, um array de objetos, e retorna o resultado da operação. Se a adição for bem-sucedida, os objetos adicionados do array users também receberão a propriedade _id.
Vamos executar a aplicação:
c:\node\mongoapp>node app
{
acknowledged: true,
insertedCount: 3,
insertedIds: {
'0': new ObjectId("6377874e1e1a085c14fcd12f"),
'1': new ObjectId("6377874e1e1a085c14fcd130"),
'2': new ObjectId("6377874e1e1a085c14fcd131")
}
}
[
{
name: 'Bob',
age: 35,
_id: new ObjectId("6377874e1e1a085c14fcd12f")
},
{
name: 'Alice',
age: 21,
_id: new ObjectId("6377874e1e1a085c14fcd130")
},
{
name: 'Tom',
age: 45,
_id: new ObjectId("6377874e1e1a085c14fcd131")
}
]O objeto de resultado na propriedade insertedCount contém a quantidade de documentos adicionados, e através da propriedade insertedIds podemos obter os identificadores dos documentos adicionados.