Como fazer consultas NoSQL no Node.js?

O Node.js permite fazer consultas NoSQL, com o MongoDB sendo uma das opções mais populares, usando a biblioteca Mongoose para interagir com dados.

Como fazer consultas NoSQL no Node.js?

Consultas NoSQL são realizadas em bancos de dados não relacionais como o MongoDB. Ao contrário de bancos relacionais como o MySQL ou PostgreSQL, bancos NoSQL não utilizam SQL para realizar operações de leitura e escrita. O MongoDB é um banco NoSQL popular, e para interagir com ele no Node.js, utilizamos o Mongoose.

1. Instalando o Mongoose

Primeiro, instale o pacote mongoose para facilitar a interação com o MongoDB:

npm install mongoose

2. Conectando ao MongoDB com Mongoose

No arquivo database.js, crie a configuração de conexão com o MongoDB:

const mongoose = require('mongoose');
require('dotenv').config();

const MONGO_URI = process.env.MONGO_URI || 'mongodb://localhost:27017/meubanco';

mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => console.log('Conectado ao MongoDB'))
    .catch(err => console.error('Erro ao conectar ao MongoDB:', err));

module.exports = mongoose;

3. Definindo um Modelo de Dados com Mongoose

Com o Mongoose, podemos criar um modelo para mapear os documentos do MongoDB. Vamos criar um modelo de usuário:

const mongoose = require('mongoose');

const UsuarioSchema = new mongoose.Schema({
    nome: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    idade: { type: Number, required: true }
});

const Usuario = mongoose.model('Usuario', UsuarioSchema);

module.exports = Usuario;

4. Fazendo Consultas NoSQL com Mongoose

Agora que temos o modelo de dados, podemos realizar consultas NoSQL no MongoDB com Mongoose. Por exemplo, para buscar todos os usuários:

const Usuario = require('./Usuario');

Usuario.find()
    .then(usuarios => console.log('Lista de usuários:', usuarios))
    .catch(err => console.error('Erro ao buscar usuários:', err));

Filtrando Consultas com Condições

Você pode adicionar condições para filtrar os dados. Exemplo de consulta com filtro para buscar usuários com idade maior que 25:

Usuario.find({ idade: { $gt: 25 } })
    .then(usuarios => console.log('Usuários com mais de 25 anos:', usuarios))
    .catch(err => console.error('Erro ao buscar usuários:', err));

Consultas com Limitação de Campos

Se você quiser retornar apenas alguns campos dos documentos, use o método select:

Usuario.find()
    .select('nome email') // Retorna apenas os campos nome e email
    .then(usuarios => console.log('Usuários:', usuarios))
    .catch(err => console.error('Erro ao buscar usuários:', err));

5. Consultas com Ordenação e Paginação

O MongoDB oferece funcionalidades de ordenar e paginamento. Exemplo para ordenar os usuários por idade e paginar os resultados:

Usuario.find()
    .sort({ idade: 1 }) // Ordena pela idade em ordem crescente
    .skip(10) // Pula os 10 primeiros registros
    .limit(10) // Limita a 10 registros por página
    .then(usuarios => console.log('Usuários ordenados e paginados:', usuarios))
    .catch(err => console.error('Erro ao buscar usuários:', err));

Conclusão

Com o Mongoose, o processo de consulta NoSQL no MongoDB se torna mais simples e organizado. Você pode realizar consultas filtradas, paginadas, ordenadas e com projeção de campos de forma eficiente.

O MongoDB, por ser um banco NoSQL, oferece flexibilidade na modelagem de dados, armazenando-os em documentos JSON-like. Aplicações como Twitter, eBay e Airbnb utilizam MongoDB para armazenar dados não estruturados e altamente escaláveis.

Ao utilizar o Mongoose, você ganha um poderoso ODM para facilitar a manipulação desses dados, além de realizar consultas complexas de forma simplificada e com a possibilidade de validar e transformar dados antes de salvar no banco.

Algumas aplicações:

  • Gestão de usuários em plataformas de mídia social
  • Armazenamento de registros em sistemas de IoT
  • Aplicações com grandes volumes de dados não estruturados
  • Criação de APIs dinâmicas e escaláveis
  • Armazenamento de dados temporários e logs de eventos

Dicas para quem está começando

  • Use find para realizar consultas simples e findOne para buscar um único documento.
  • Aproveite a flexibilidade do MongoDB para armazenar dados sem um esquema rígido.
  • Considere o uso de índices para acelerar consultas em campos de busca frequentes.
  • Faça validações nos modelos para garantir a integridade dos dados.
  • Utilize métodos de agregação do MongoDB para consultas mais complexas.
Foto de Henrique Almeida
Contribuições de
Henrique Almeida

Especialista em desenvolvimento backend usando Node.js e arquiteturas de microsserviços.

Mais sobre o autor
Compartilhe este tutorial: Como fazer consultas NoSQL no Node.js?

Compartilhe este tutorial

Continue aprendendo:

Como fazer consultas SQL no Node.js?

No Node.js, é possível fazer consultas SQL em bancos de dados como MySQL e PostgreSQL usando pacotes como `mysql2` e `pg`.

Tutorial anterior

Como criar migrations no Sequelize?

As migrations no Sequelize são usadas para versionar o banco de dados, permitindo que as alterações no esquema sejam aplicadas de forma controlada e sem perda de dados.

Próximo tutorial