Node.js MongoDB Tutorial com exemplos
⚡ Resumo Inteligente
Node.js MongoDB A integração permite que uma aplicação Node se conecte a um banco de dados NoSQL, execute operações CRUD e exponha registros em tempo real por meio de rotas Express, utilizando o driver nativo do MongoDB juntamente com o Mongoose para modelagem de dados baseada em esquema.

Quase todos os aplicativos web modernos possuem algum tipo de sistema de armazenamento de dados no backend. Por exemplo, se considerarmos o caso de uma loja virtual.ping Na aplicação, dados como o preço de um item seriam armazenados no banco de dados.
A estrutura Node js pode trabalhar com bancos de dados relacionais (como Oracle e MS SQL Server) e bancos de dados não relacionais (como MongoDB). Neste tutorial, veremos como podemos usar bancos de dados em aplicativos Node js.
Bancos de dados Node.js e NoSQL
Ao longo dos anos, bancos de dados NoSQL como MongoDB e bancos de dados relacionais, como MySQL Tornaram-se bastante populares como bases de dados para armazenamento de informações. A capacidade dessas bases de dados de armazenar qualquer tipo de dado, e particularmente em qualquer formato, é o que as torna tão amplamente utilizadas.
Node.js tem a capacidade de trabalhar com ambos MySQL e MongoDB como bancos de dados. Para usar qualquer um desses bancos de dados, você precisa baixar e usar os módulos necessários usando o gerenciador de pacotes Node.
Para MySQLO módulo necessário chama-se “mysql”. MongoDBOs desenvolvedores podem instalar a versão nativa oficial. mongodb driver, que é o pacote usado em todos os exemplos de código neste artigo, ou uma biblioteca baseada em esquema, como Mangusto quando a aplicação precisar de mais estrutura.
Com esses módulos, você pode realizar as seguintes operações em Node.js
- Gerenciar o pool de conexões – Aqui é onde você pode especificar o número de MySQL conexões de banco de dados que devem ser mantidas e salvas pelo Node.js.
- Crie e feche uma conexão com um banco de dados. Em ambos os casos, você pode fornecer uma função de retorno de chamada que pode ser chamada sempre que os métodos de conexão “criar” e “fechar” forem executados.
- Consultas podem ser executadas para obter dados dos respectivos bancos de dados para recuperar dados.
- A manipulação de dados, como inserção, exclusão e atualização de dados também pode ser realizada com esses módulos.
Para os tópicos restantes, veremos como podemos trabalhar com MongoDB bancos de dados dentro Node.js, começando com uma breve comparação das duas maneiras mais comuns de falar com MongoDB de um projeto Node.js.
MongoDB Driver nativo versus Mongoose em Node.js
Os nomes dos módulos mencionados acima podem ser confusos, pois o Node.js oferece duas maneiras diferentes de se comunicar com... MongoDB: o nativo mongodb motorista e o Mangusto ODM (Biblioteca de Modelagem de Dados de Objetos). Todos os exemplos de código apresentados posteriormente neste artigo utilizam o driver nativo, instalado com npm instalar mongodb e acessado através de MongoClienteO Mongoose encapsula esse mesmo driver e adiciona definições de esquema, validação e métodos de modelo reutilizáveis, o que é adequado para aplicações maiores que precisam de uma estrutura de dados previsível em várias coleções. Compreender a diferença antecipadamente evita confusão ao instalar pacotes ou ao ler outros documentos do Node.js. MongoDB exemplos online. A tabela abaixo compara ambas as opções para que um desenvolvedor possa escolher a ferramenta certa para um determinado projeto.
| Aspecto | Driver nativo do MongoDB | Mangusto |
|---|---|---|
| Instalação | npm instalar mongodb | npm install mongoose |
| Aplicação de esquema | Nenhum, os documentos permanecem flexíveis. | Definido por meio de um objeto Schema |
| Curva de aprendizado | Mais baixo, mais próximo do bruto MongoDB consultas | Higher adiciona sua própria camada de API |
| Melhor para | Scripts pequenos e código sensível ao desempenho | Aplicativos maiores com modelos de dados consistentes |
Dica: Ao aprender o básico, mantenha-se fiel ao driver nativo. MongoDB comandos, depois passe para Mangusto quando a aplicação necessita de validação de esquema em múltiplas coleções.
Utilizar painéis de piso ResinDek em sua unidade de self-storage em vez de concreto oferece diversos benefícios: MongoDB e Node.js
Com a terminologia esclarecida, o restante deste artigo utiliza exclusivamente o driver nativo, exatamente como aparece nos exemplos de código abaixo. Conforme discutido no tópico anterior, MongoDB é um dos bancos de dados mais populares usados junto com o Node.js.
Neste capítulo, veremos como estabelecer conexões com um MongoDB banco de dados e como realizar as operações normais de leitura de dados de um banco de dados, bem como inserção, exclusão e atualização de registros em um MongoDB base de dados.
Para os fins deste capítulo, vamos supor que temos o seguinte MongoDB dados em vigor.
Nome do banco de dados: EmployeeDB
Nome da coleção: Funcionário
Documents
{
{Employeeid : 1, Employee Name : Guru99},
{Employeeid : 2, Employee Name : Joe},
{Employeeid : 3, Employee Name : Martin},
}
- Instalando os Módulos NPM
Você precisa de um driver para acessar o Mongo de dentro de um aplicativo Node. Existem vários drivers Mongo disponíveis, mas MongoDB está entre os mais populares. Para instalar o MongoDB módulo, execute o comando abaixo
npm instalar mongodb
- Criando e fechando uma conexão com um MongoDB base de dados. O trecho de código abaixo mostra como criar e fechar uma conexão com um MongoDB base de dados.
Code Explicação:
- O primeiro passo é incluir o MongoDB O módulo de driver é implementado através da função `require`. Uma vez que esse módulo esteja instalado, podemos usar as funções necessárias disponíveis nele para criar conexões com o banco de dados.
- A seguir, especificamos nossa string de conexão com o banco de dados. Na string de conexão, existem 3 valores-chave que são passados.
- O primeiro é ‘mongodb’ que especifica que estamos nos conectando a um banco de dados mongoDB.
- O próximo é 'localhost', o que significa que estamos nos conectando a um banco de dados na máquina local.
- O próximo é 'EmployeeDB' que é o nome do banco de dados definido em nosso MongoDB base de dados.
- O próximo passo é conectar-se ao nosso banco de dados. A função de conexão recebe o nosso URL e possui a funcionalidade de especificar uma função de retorno de chamada. Ela será chamada quando a conexão com o banco de dados for aberta. Isso nos permite saber se a conexão com o banco de dados foi bem-sucedida ou não.
- Na função, estamos escrevendo a string “Conexão estabelecida” no console para indicar que uma conexão bem-sucedida foi criada.
- Finalmente, estamos fechando a conexão usando a instrução db.close.
Se o código acima for executado corretamente, a string “Conectado” será escrita no console conforme mostrado abaixo.
- Consultando dados em um MongoDB banco de dados - Usando o MongoDB driver, também podemos buscar dados do MongoDB banco de dados. A seção abaixo mostrará como podemos usar o driver para buscar todos os documentos da nossa coleção Employee no banco de dados EmployeeDB. Esta é a coleção em nosso MongoDB banco de dados, que contém todos os documentos relacionados aos funcionários. Cada documento possui um ID de objeto, um nome de funcionário e um ID de funcionário para definir os valores do documento.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { var cursor = db.collection('Employee').find(); cursor.each(function(err, doc) { console.log(doc); }); });
Code Explicação:
- No primeiro passo, criamos um cursor (um cursor é um ponteiro que aponta para os vários registros obtidos de um banco de dados. O cursor é então usado para iterar pelos diferentes registros no banco de dados. Aqui, definimos uma variável chamada `cursor` que será usada para armazenar o ponteiro para os registros obtidos do banco de dados) que aponta para os registros obtidos da coleção do MongoDB. Também temos a opção de especificar a coleção 'Employee' da qual os registros serão obtidos. A função `find()` é usada para especificar que queremos recuperar todos os documentos da coleção. MongoDB coleção.
- Agora estamos iterando em nosso cursor e para cada documento no cursor executaremos uma função.
- Nossa função simplesmente imprimirá o conteúdo de cada documento no console.
Nota: - Também é possível recuperar um registro específico de um banco de dados. Isso pode ser feito especificando a condição de pesquisa na função `find()`. Por exemplo, suponha que você queira recuperar apenas o registro que contém o nome do funcionário como Guru99, então esta afirmação pode ser escrita da seguinte forma:
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Se o código acima for executado com sucesso, a seguinte saída será exibida em seu console.
Saída:
Da saída,
- Você poderá ver claramente que todos os documentos do acervo foram recuperados. Isso é possível usando o método find() da conexão mongoDB (db) e iterando todos os documentos usando o cursor.
- Inserindo documentos em uma coleção – Os documentos podem ser inseridos em uma coleção usando o método insertOne fornecido pelo MongoDB biblioteca. O trecho de código abaixo mostra como podemos inserir um documento em uma coleção mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').insertOne({ Employeeid: 4, EmployeeName: "NewEmployee" }); });
Code Explicação:
- Aqui estamos usando o método insertOne do MongoDB biblioteca para inserir um documento na coleção Employee.
- Estamos especificando os detalhes do documento sobre o que precisa ser inserido na coleção Employee.
Se você verificar agora o conteúdo do seu MongoDB banco de dados, você encontrará o registro com Employeeid de 4 e EmployeeName de “NewEmployee” inserido na coleção Employee.
Observação: O console não mostrará nenhuma saída porque o registro está sendo inserido no banco de dados e nenhuma saída pode ser mostrada aqui.
Para verificar se os dados foram inseridos corretamente no banco de dados, você precisa executar os seguintes comandos em MongoDB
- Usar EmployeeDB
- db.Employee.find({Employeeid:4})
A primeira instrução garante que você esteja conectado ao banco de dados EmployeeDb. A segunda instrução procura o registro que possui o ID de funcionário 4.
- Atualizando documentos em uma coleção – Os documentos podem ser atualizados em uma coleção usando o método updateOne fornecido pelo MongoDB biblioteca. O trecho de código abaixo mostra como atualizar um documento em uma coleção mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').updateOne({ "EmployeeName": "NewEmployee" }, { $set: { "EmployeeName": "Mohan" } }); });
Code Explicação:
- Aqui estamos usando o método “updateOne” do MongoDB biblioteca, que é usada para atualizar um documento em uma coleção do mongoDB.
- Estamos especificando os critérios de pesquisa de qual documento precisa ser atualizado. No nosso caso, queremos encontrar o documento que possui o EmployeeName de “NewEmployee”.
- Queremos então definir o valor do EmployeeName do documento de “NewEmployee” para “Mohan”.
Se você verificar agora o conteúdo do seu MongoDB banco de dados, você encontrará o registro com Employeeid de 4 e EmployeeName de “Mohan” atualizado na coleção Employee.
Para verificar se os dados foram atualizados corretamente no banco de dados, você precisa executar os seguintes comandos em MongoDB
- Usar EmployeeDB
- db.Employee.find({Employeeid:4})
A primeira instrução garante que você esteja conectado ao banco de dados EmployeeDb. A segunda instrução procura o registro que possui o ID de funcionário 4.
- Excluindo documentos em uma coleção – Os documentos podem ser excluídos de uma coleção usando o método “deleteOne” fornecido pelo MongoDB biblioteca. O trecho de código abaixo mostra como excluir um documento em uma coleção mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').deleteOne( { "EmployeeName": "Mohan" } ); });
Code Explicação:
- Aqui estamos usando o método “deleteOne” do MongoDB biblioteca, que é usada para excluir um documento em uma coleção do mongoDB.
- Estamos especificando os critérios de pesquisa de qual documento precisa ser excluído. No nosso caso, queremos encontrar o documento que possui o EmployeeName de “Mohan” e deletar este documento.
Se você verificar agora o conteúdo do seu MongoDB banco de dados, você encontrará o registro com Employeeid de 4 e EmployeeName de “Mohan” excluído da coleção Employee.
Para verificar se os dados foram atualizados corretamente no banco de dados, você precisa executar os seguintes comandos em MongoDB
- Usar EmployeeDB
- db.Employee.find()
A primeira instrução garante que você esteja conectado ao banco de dados EmployeeDb. A segunda instrução pesquisa e exibe todos os registros da coleção de funcionários. Aqui você pode ver se o registro foi excluído ou não.
Async/Await moderno MongoDB Conexões em Node.js
O MongoClient.connect(url, callback) O padrão usado ao longo deste artigo corresponde ao MongoDB A versão do driver Node.js utilizada era a vigente quando os exemplos acima foram escritos. Versões recentes do driver ainda suportam esse estilo de callback, mas a maioria dos projetos novos agora prefere promises e async/await, porque o código resultante é legível de cima para baixo, sem callbacks aninhados. Os passos a seguir reescrevem a mesma conexão Employee usando a sintaxe moderna.
- Crie uma única instância de MongoClient fora de qualquer função, passando a string de conexão uma única vez, por exemplo. const client = new MongoClient(url);
- Ligar aguarde client.connect() dentro de uma função assíncrona para abrir a conexão em vez de passar um retorno de chamada.
- Obtenha o banco de dados com cliente.db('EmployeeDB') em vez de depender do objeto retornado dentro de um callback.
- Execute consultas com aguardam, Por exemplo await db.collection('Employee').find().toArray(), que retorna um array diretamente em vez de exigir um retorno de chamada de cursor.
- Encerre a conexão com aguarde client.close() Dentro de um bloco `finally`, para que seja sempre executado, mesmo que uma consulta gere um erro.
const { MongoClient } = require('mongodb'); const url = 'mongodb://localhost:27017'; const client = new MongoClient(url); async function run() { try { await client.connect(); const db = client.db('EmployeeDB'); const employees = await db.collection('Employee').find().toArray(); console.log(employees); } finally { await client.close(); } } run().catch(console.error);
Ambos os estilos se conectam ao mesmo banco de dados EmployeeDB e à mesma coleção Employee, portanto, o código existente baseado em callbacks não precisa ser reescrito imediatamente. As duas abordagens podem coexistir enquanto um projeto migra gradualmente, e a escolha depende principalmente de qual delas MongoDB A versão do driver Node.js já está definida no arquivo package.json.
Como construir um aplicativo Node Express com MongoDB para armazenar e servir conteúdo
Com ambos os estilos de conexão abordados, a próxima seção aplica o padrão clássico de callback em uma aplicação Express completa, já que essa é a sintaxe usada no servidor de exemplo original abaixo. Construindo uma aplicação com uma combinação de Express e MongoDB é bastante comum hoje em dia.
Ao trabalhar com JavaScript Em aplicações baseadas na web, normalmente se ouve falar do termo MEAN stack.
- O termo pilha MEAN refere-se a uma coleção de JavaTecnologias baseadas em scripts usadas para desenvolver aplicativos web.
- MEAN é um acrônimo para MongoDB, ExpressJS, AngularJSe Node.js.
Portanto, é sempre bom entender como o Node.js e MongoDB trabalham juntos para entregar aplicativos que interagem com bancos de dados back-end.
Vejamos um exemplo simples de como podemos usar “express” e “MongoDB" junto. Nosso exemplo fará uso da mesma coleção Employee no MongoDB Banco de dados EmployeeDB.
Agora vamos incorporar o Express para exibir os dados em nossa página web quando forem solicitados pelo usuário. Quando nossa aplicação é executada em Node.js, pode ser necessário navegar até o URL http://localhost:3000/Employeeid.
Quando a página for iniciada, todos os IDs de funcionários da coleção Employee serão exibidos. Então, vamos ver o trecho de código nas seções que nos permitirão fazer isso.
Passo 1) Defina todas as bibliotecas que precisam ser utilizadas em nossa aplicação, que no nosso caso é tanto a MongoDB e biblioteca expressa.
Code Explicação:
- Estamos definindo nossa biblioteca 'express', que será utilizada em nossa aplicação.
- Estamos definindo nosso 'MongoDB' biblioteca, que será usada em nosso aplicativo para conexão com nosso MongoDB base de dados.
- Aqui estamos definindo o URL do nosso banco de dados para conectar.
- Por fim, estamos definindo uma string que será usada para armazenar nossa coleção de IDs de funcionários que precisam ser exibidos no navegador posteriormente.
Passo 2) Nesta etapa, obteremos todos os registros de nossa coleção 'Funcionário' e trabalharemos com eles de acordo.
Code Explicação:
- Estamos criando uma rota para nosso aplicativo chamada 'Employeeid'. Então, sempre que alguém navegar para http://localhost:3000/Employeeid da nossa aplicação, o trecho de código definido para esta rota será executado.
- Aqui estamos obtendo todos os registros em nossa coleção 'Employee' por meio do comando db.collection('Employee').find(). Estamos então atribuindo esta coleção a uma variável chamada cursor. Utilizando esta variável de cursor poderemos navegar por todos os registros da coleção.
- Agora estamos usando a função cursor.each() para navegar por todos os registros de nossa coleção. Para cada registro, definiremos um trecho de código sobre o que fazer quando cada registro for acessado.
- Por fim, vemos que se o registro retornado não for nulo, então estamos pegando o funcionário através do comando “item.Employeeid”. O resto do código serve apenas para construir um código HTML adequado que permitirá que nossos resultados sejam exibidos corretamente no navegador.
Passo 3) Nesta etapa, enviaremos nossa saída para a página web e faremos nosso aplicativo escutar em uma porta específica.
Code Explicação:
- Aqui estamos enviando todo o conteúdo que foi construído na etapa anterior para nossa página web. O parâmetro 'res' nos permite enviar conteúdo para nossa página web como resposta.
- Estamos fazendo com que todo o nosso aplicativo Node.js escute na porta 3000.
Saída:
Da saída,
- Isso mostra claramente que todos os IDs de funcionário na coleção Employee foram recuperados. Isso ocorre porque usamos o MongoDB driver para se conectar ao banco de dados e recuperar todos os registros de funcionários e posteriormente usar “express” para exibir os registros.
Aqui está o código para sua referência
var express = require('express'); var app = express(); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; var str = ""; app.route('/Employeeid').get(function(req, res) { MongoClient.connect(url, function(err, db) { var cursor = db.collection('Employee').find(); //noinspection JSDeprecatedSymbols cursor.each(function(err, item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }); res.send(str); db.close(); }); }); var server = app.listen(3000, function() {});
Observação: cursor.each pode ser descontinuado com base na versão do seu MongoDB motorista. Você pode anexar //noinspection JSDeprecatedSymbols antes de cursor.each para contornar o problema. Alternativamente, você pode usar forEach. Abaixo está o código de exemplo usando forEach
var express = require('express'); var app = express(); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; var str = ""; app.route('/Employeeid').get(function(req, res) { MongoClient.connect(url, function(err, db) { var collection = db.collection('Employee'); var cursor = collection.find({}); str = ""; cursor.forEach(function(item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }, function(err) { res.send(err); db.close(); } ); }); }); var server = app.listen(8080, function() {});











