Iniciando com MongoDB - Node.js
Atualmente, a plataforma mais popular para gerenciamento de banco de dados em Node.js é o MongoDB. Para trabalhar com esta plataforma, primeiro é necessário instalar o servidor MongoDB. Para mais detalhes sobre como fazer isso, é descrito aqui. Além do servidor Mongo, precisamos do driver para interagir com o Node.js.
Ao conectar e interagir com o banco de dados no MongoDB, podemos identificar as seguintes etapas:
Conexão ao servidor
Obtenção do objeto do banco de dados no servidor
Obtenção do objeto da coleção no banco de dados
Interação com a coleção (adição, remoção, obtenção e alteração de dados)
Vamos criar um novo projeto. Para isso, definimos um novo diretório chamado mongoapp
mongodb
npm install mongodb
Vale ressaltar que, no momento da escrita deste tema, a versão atual do driver é 6.8.0. Entre versões e até subversões, às vezes, existem algumas diferenças. E nesse sentido, a funcionalidade do driver muda com frequência. No entanto, aspectos gerais geralmente permanecem constantes. Todas as informações de referência necessárias sobre este driver específico podem ser encontradas em driver.
Conectando ao Banco de Dados
Antes de conectar ao MongoDB a partir de uma aplicação Node.js, precisamos primeiro iniciar o servidor MongoDB.
A classe chave para trabalhar com MongoDB é a classe MongoClient
MongoClient
const MongoClient = require("mongodb").MongoClient;
No construtor do MongoClient
const url = "mongodb://user:password@host:port/?options";
Elementos da string de conexão:
Protocolo: geralmente "mongodb".
Nome de usuário e senha (se necessário): "user:password".
Host e porta onde o servidor MongoDB está em execução: "host:port".
Parâmetros adicionais de conexão: após o ponto de interrogação
.?
Por exemplo, para conectar a um servidor MongoDB local em execução no endereço padrão 127.0.0.1:27017
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);
Para conectar ao servidor MongoDB, usamos o método connect()
mongoClient.connect().then(client => {
console.log("Conexão estabelecida");
console.log(client.options.dbName); // obtém o nome do banco de dados
});
O método then()
MongoClient
client.options.dbName
Para fechar a conexão ao finalizar o trabalho com o banco de dados, usamos o método close()
client.connect().then(client => {
console.log("Conexão estabelecida");
// realiza operações com o banco de dados MongoDB
client.close().then(() => console.log("Conexão fechada"));
});
O método close()
then()
No entanto, organizar toda a lógica de interação através de chamadas then()
async/await
const MongoClient = require("mongodb").MongoClient;
const mongoClient = new MongoClient("mongodb://127.0.0.1:27017/");
async function run() {
try {
await mongoClient.connect();
console.log("Conexão estabelecida");
// interações com o banco de dados
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
console.log("Conexão fechada");
}
}
run().catch(console.log);
Obtendo o Banco de Dados
Após conectar ao servidor, podemos acessar o banco de dados. Para isso, usamos o método:
O método recebe como parâmetro o nome do banco de dados ao qual queremos nos conectar. O resultado é um objeto do banco de dados, através do qual podemos acessar os dados.
Para exemplificar, faremos um ping ao banco de dados "admin", que existe por padrão no servidor MongoDB:
const MongoClient = require("mongodb").MongoClient;
const mongoClient = new MongoClient("mongodb://127.0.0.1:27017/");
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("admin");
const result = await db.command({ ping: 1 });
console.log("Conexão com o servidor estabelecida com sucesso");
console.log(result);
} catch (err) {
console.log("Erro ocorrido");
console.log(err);
} finally {
await mongoClient.close();
console.log("Conexão fechada");
}
}
run().catch(console.error);
Para executar comandos de diagnóstico como o ping, o objeto do banco de dados Db
command
{ping: 1}
No MongoDB, os dados são armazenados em coleções em vez de tabelas. Para interagir com o banco de dados (adicionar, remover, ler dados), precisamos obter o objeto da coleção usando o método db.collection("nome_da_colecao")
Collection
Ao contrário das tabelas em sistemas relacionais, onde todos os dados são armazenados em linhas, nas coleções do MongoDB, os dados são armazenados em documentos. Por exemplo, podemos acessar uma coleção em um banco de dados:
const MongoClient = require("mongodb").MongoClient;
const mongoClient = new MongoClient("mongodb://127.0.0.1:27017/");
async function run() {
try {
await mongoClient.connect();
const db = mongoClient.db("usersdb");
const collection = db.collection("users");
const count = await collection.countDocuments();
console.log(`A coleção users contém ${count} documentos`);
} catch (err) {
console.log(err);
} finally {
await mongoClient.close();
}
}
run().catch(console.error);
Aqui, usamos o banco de dados "usersdb". Mesmo que não exista por padrão no servidor MongoDB, ele será criado automaticamente ao ser acessado pela primeira vez.
Após a conexão, acessamos a coleção "users":
const collection = db.collection("users");
Da mesma forma, a coleção será criada automaticamente ao ser acessada pela primeira vez.
Com a coleção obtida, podemos usar seus métodos. Neste exemplo, usamos o método countDocuments()
console.log(`A coleção users contém ${count} documentos`);