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.