DEV Community

Cover image for MongoDB Descomplicado: O Guia Definitivo para Iniciantes em MongoDB
rodrigozan
rodrigozan

Posted on

MongoDB Descomplicado: O Guia Definitivo para Iniciantes em MongoDB

MongoDB Descomplicado: O Guia Definitivo para Iniciantes em MongoDB

O MongoDB é um dos bancos de dados NoSQL mais populares do mundo. Sua flexibilidade e escalabilidade o tornam uma escolha ideal para projetos de todos os tamanhos.

Neste tutorial, iremos explorar os conceitos básicos do MongoDB e fornecer uma introdução abrangente para iniciantes, criando uma simples aplicação em Node.js.

O que é o MongoDB

O MongoDB é um banco de dados orientado a documentos, o que significa que ele armazena dados em formato de documentos BSON (Binary JSON). Esses documentos são semelhantes a objetos JSON, tornando o MongoDB fácil de entender e usar.

Vantagens do MongoDB

Existem muitas vantagens em se usar o MongoDB no desenvolvimento de APIs e aplicações:

Flexibilidade do esquema: O MongoDB é um banco de dados NoSQL orientado a documentos, o que significa que não requer um esquema rígido como nos bancos de dados relacionais. Isso permite que você armazene documentos com estruturas diferentes no mesmo banco de dados, facilitando a adaptação às necessidades em constante mudança do seu projeto.

Escalabilidade horizontal: O MongoDB foi projetado para ser altamente escalável. Ele permite a distribuição dos dados em vários servidores, possibilitando um aumento de desempenho à medida que a carga de trabalho aumenta. É possível adicionar mais servidores conforme necessário, tornando o MongoDB adequado para aplicações com grande volume de dados e tráfego intenso.

Desempenho rápido: O MongoDB possui um mecanismo de indexação eficiente e acesso direto aos dados, o que contribui para um desempenho rápido. Ele suporta consultas complexas e pode manipular grandes quantidades de dados de forma eficiente, garantindo uma resposta rápida às solicitações.

Modelo de dados flexível: O MongoDB permite que você armazene dados complexos e estruturas aninhadas de forma nativa. Isso facilita a representação e o acesso aos dados, especialmente em cenários onde a estrutura dos dados pode variar entre documentos.

Comunidade e suporte ativos: O MongoDB possui uma comunidade ativa de desenvolvedores e uma empresa por trás dele que oferece suporte e atualizações frequentes. Isso significa que você terá acesso a recursos, documentação e suporte técnico de qualidade para auxiliá-lo na construção e manutenção de seus projetos.

Desvantagens de se usar o MongoDB

Como em toda tecnologia, existem pontos desfavoráveis no uso do MongoDB.

Consumo de recursos: O MongoDB pode consumir mais recursos do sistema em comparação com alguns bancos de dados relacionais. Isso ocorre devido ao seu modelo de armazenamento flexível e indexação intensiva, o que pode exigir mais memória e capacidade de processamento.

Complexidade de consultas: Embora o MongoDB seja poderoso em termos de consultas, às vezes pode ser mais complexo de usar do que bancos de dados relacionais tradicionais. Consultas complexas podem exigir um conhecimento mais aprofundado da sintaxe e recursos específicos do MongoDB.

Ausência de transações ACID: O MongoDB não suporta transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade) em todas as operações. Isso pode ser um problema em cenários onde a integridade dos dados é fundamental e transações complexas são necessárias.

Falta de aderência a um esquema fixo: Embora a flexibilidade do esquema seja uma vantagem, também pode ser uma desvantagem em certos casos. Em projetos com requisitos estritamente definidos e relacionamentos complexos entre os dados, a falta de um esquema fixo pode dificultar a manutenção e a consistência dos dados.

Curva de aprendizado: Para desenvolvedores acostumados com bancos de dados relacionais, o MongoDB pode exigir uma curva de aprendizado inicial. É necessário compreender os conceitos específicos do MongoDB e suas melhores práticas para aproveitar ao máximo o seu potencial.

Você deve pesar as vantagens e desvantagens na utilização desse banco de dados NoSQL em seus projetos.

Como começar com o MongoDB

Para começar a usar o MongoDB, você precisa seguir algumas etapas simples:

Passo 1: Instalação

Faça o download do MongoDB no site oficial e siga as instruções de instalação adequadas ao seu sistema operacional.

Se quiser, pode seguir este tutorial que ensina a instalar o MongoDB nos sistemas operacionais Windows, Linux e Mac:

Como instalar o MongoDB: Guia Passo a Passo para Windows, Mac e Linux

Passo 2: Conectar ao MongoDB

Após a instalação, você precisa se conectar ao MongoDB. O MongoDB usa o conceito de banco de dados e coleções. O banco de dados é o recipiente principal que armazena suas coleções.

Vamos usar o Windows como exemplo para nos conectarmos ao MongoDB.

  • Abra o menu Iniciar e pesquise por "Variáveis de ambiente".
  • Selecione a opção "Editar as variáveis de ambiente do sistema".
  • Na janela "Propriedades do Sistema", clique no botão "Variáveis de Ambiente".
  • Na seção "Variáveis do sistema", selecione a variável "Path" e clique em "Editar".
  • Clique em "Novo" e adicione o caminho do diretório bin do MongoDB. O caminho padrão é "C:\Program Files*MongoDB\Server{versão}\bin". Encontrando o **MongoDB* em Program Files e acessando a pasta bin, basta copiar o endereço do Explorer.
  • Clique em "OK" em todas as janelas para salvar as alterações.

Agora basta abrir o terminal do Windows (CMD ou Power Shell) e executar o comando :

mongod
Enter fullscreen mode Exit fullscreen mode

O servidor será iniciado e estará pronto para aceitar conexões.

Em seguida, abra uma nova janela do terminal do Windows e digite o comando abaixo para se conectar ao MongoDB:

mongo
Enter fullscreen mode Exit fullscreen mode

Isso abrirá o shell do MongoDB, onde você pode executar comandos e consultas.

Agora você está conectado ao MongoDB local no Windows. Você pode criar bancos de dados, coleções, inserir dados e realizar várias operações usando comandos do MongoDB.

Comandos básicos do MongoDB

Vamos criar um banco de dados para uma biblioteca, uma coleção para livros e uma coleção para membros.

Criação de um banco de dados:

O comando para se criar bancos de dados no MongoDB é use nome_do_banco_de_dados. Nosso banco de dados se chamará biblioteca. Então, o comando para a criação será:

use biblioteca
Enter fullscreen mode Exit fullscreen mode

Ver todos os bancos de dados:

show databases
Enter fullscreen mode Exit fullscreen mode

ou

show dbs
Enter fullscreen mode Exit fullscreen mode

Criação de uma coleção:

Uma coleção seria o equivalente, em um banco de dados relacional, a uma tabela.

Ao usarmos db antes da função, estamos criando uma coleção no banco de dados que foi definido no comando anterior, ou seja, no banco biblioteca.

db.createCollection("livros")
Enter fullscreen mode Exit fullscreen mode

E agora vamos criar a coleção de usuários, que, como definimos anteriormente, se chamará membros:

db.createCollection("membros")
Enter fullscreen mode Exit fullscreen mode

Inserir um documento:

Um documento do MongoDB seria o equivalente, em um banco de dados relacional, aos registros de uma tabela. O comando para inserção de um documento seria insertOne:

db.nome_da_colecao.insertOne({campo1: valor1, campo2: valor2, ...})
Enter fullscreen mode Exit fullscreen mode

Para inserir os dados de um livro em um documento, nosso comando, além de usar o db, precisa declarar a qual a coleção o documento pertence. Então o comando se inicia com db.nome_da_coleção, e só depois o insertOne é acrescentado.

db.livros.insertOne({titulo: "Percy Jackson e o Ladrão de Raios", autor: "Rick Riordan", editora: "Pendragon", lancamento: new Date("2023-07-12")})
Enter fullscreen mode Exit fullscreen mode

Vamos inserir mais um livro.

db.livros.insertOne({titulo: "Pega-pega com Folclóricos", autor: "Rod Zandonadi", editora: "Griots", lancamento: new Date("2022-08-12")})
Enter fullscreen mode Exit fullscreen mode

Listar documentos no MongoDB:

Agora temos dois livros cadastrados em nosso banco de dados. Para listá-los, usamos o comando find.

db.livros.find()
Enter fullscreen mode Exit fullscreen mode

Inserir mais de um documento no MongoDB:

Vamos, agora, criar alguns usuários, os membros da nossa biblioteca. Porém, para não precisarmos usar o comando insertOne várias vezes, vamos utilizar um novo comando. O comando insertMany, que nos permite inserir vários documentos de uma vez.

Da mesma forma, usaremos db e o nome da coleção antes do comando, no caso, a coleção será a de membros.

db.membros.insertMany([
  { nome: "Rodrigo Estagiário", dataNasc: "new DAte("1991-10-28")", sexo: "M", escola: "Eitor Freitas" },
  { nome: "João Estagiário", dataNasc: "new DAte("1992-12-13")", sexo: "M", escola: "Possidônio" },
  { nome: "Alysson Estagiário", dataNasc: "new DAte("1990-11-15")", sexo: "M", escola: "Possidônio" },
  { nome: "Bruna Estagiária", dataNasc: "new DAte("1995-12-26")", sexo: "F", escola: "Eitor Freitas" },
  { nome: "Aymin Estagiária", dataNasc: "new DAte("1990-08-28")", sexo: "F", escola: "Eitor Freitas" },
  { nome: "Nicole Estagiária", dataNasc: "new DAte("2000-03-27")", sexo: "F", escola: "Eitor Freitas" },
])
Enter fullscreen mode Exit fullscreen mode

Rode novamente o comando find para listar todos os membros. Não se esqueça de trocar a coleção para membros:

db.membros.find()

Enter fullscreen mode Exit fullscreen mode

CRUD no MongoDB

Como todo bom tutorial de desenvolvimento web, é imprescindível termos um CRUD. Vamos realizar então um CRUD de livros.

CRUD de Livros

Inserir um documento:

db.livros.insertOne({titulo: "A Filha do Tempo e os Descendentes de Etherion", autor: "Rod Zandonadi", editora: "Griots", lancamento: new Date("2021-02-07")})
Enter fullscreen mode Exit fullscreen mode
db.livros.insertOne({titulo: "O pior Rei Artur de todos os tempos", autor: "Rod Zandonadi", editora: "", lancamento: new Date("2021-02-07")})
Enter fullscreen mode Exit fullscreen mode

Como vimos anteriormente, o comando insertOne insere um documento na coleção especificada no MongoDB. Você pode usar insertMany() para inserir vários documentos de uma vez:

db.membros.insertMany([
  {titulo: "A Filha do Tempo e as Armas Primervas", autor: "Rod Zandonadi", editora: "Griots", lancamento: new Date("2022-02-07")},
  {titulo: "A Filha do Tempo e os Escolhidos dos Primeiros", autor: "Rod Zandonadi", editora: "Griots", lancamento: new Date("2023-02-07")},
  {titulo: "Por Nidavellir", autor: "Rod Zandonadi", editora: "Griots", lancamento: new Date("2022-02-07")},
  {titulo: "Percy Jackson e o Último Olimpiano", autor: "Rick Riordan", editora: "Pendragon", lancamento: new Date("2023-07-12")}
])
Enter fullscreen mode Exit fullscreen mode

Consultar documentos no **MongoDB:**

db.livros.find()
Enter fullscreen mode Exit fullscreen mode

Já aprendemos o comando find retorna todos os documentos na coleção especificada.

Consultar documentos com filtro no **MongoDB:**

db.nome_da_colecao.find({campo: valor})
Enter fullscreen mode Exit fullscreen mode

Isso retorna os documentos que correspondem ao filtro especificado. Por exemplo, {editora: "Griots"} retornará os documentos com o campo editora igual a Griots.

db.livros.find({editora: "Griots"})
Enter fullscreen mode Exit fullscreen mode

Podemos consultar também os autores:

db.livros.find({autor: "Rick Riordan"})
Enter fullscreen mode Exit fullscreen mode

Ou qualquer outro campo que exista na coleção.

Atualizar um documento no **MongoDB:**

db.nome_da_colecao.updateOne({filtro}, {$set: {campo: novo_valor}})
Enter fullscreen mode Exit fullscreen mode

Esse comando atualiza um documento que corresponda ao filtro especificado. Um uso comum é realizar a atualização pelo ID. Você pode pegar esse ID com o comando find, que lista todos os documentos da coleção. Vamos supor que você queria listar todos os livros da editora Griots:

db.livros.find({editora: "Griots"})
Enter fullscreen mode Exit fullscreen mode

Agora é só escolher o documento que você quer atualizar, e inserir o valor do _id no comando updateOne.

Para copiar o ID do terminal, selecione o ID, clique com o botão direito sobre a seleção e escolha copiar; ou, depois de selecionar o ID, aperte as teclas CTRL + SHIFT + C.

Para colar a informação no terminal, repita os passos anteriores, mas escolha colar depois de clicar com o botão direito; e use CTRL + SHIFT + V para colar.

db.livros.updateOne(
  { _id: ObjectId("id_do_documento") },
  { $set: { campo: novo_valor } }
)

Enter fullscreen mode Exit fullscreen mode

Use updateMany() para atualizar vários documentos. Vamos supor que você queira adicionar o campo ilustrador a todos os livros da editora Griots:

 db.minha_colecao.updateMany(
  { editora: "Griots" },
  { $set: { ilustrador: "Rodzanart" } }
)
Enter fullscreen mode Exit fullscreen mode

Excluir documentos no **MongoDB:**

db.nome_da_colecao.deleteOne({filtro})
Enter fullscreen mode Exit fullscreen mode

O comando deleteOne exclui um documento que corresponda ao filtro especificado. Vamos criar um livro com o nome errado, e excluí-lo com base no nome.

db.livros.insertOne({titulo: "Livro para excluir", autor: "Rod Zandonadi", editora: "Forgus", lancamento: new Date("2021-02-07")})
Enter fullscreen mode Exit fullscreen mode

E agora usaremos o comando deleteOne.

db.livros.deleteOne({ titulo: "Livro para excluir" })

Enter fullscreen mode Exit fullscreen mode

Que tal confirmarmos com o comando find, filtrando pela editora Forgus?

db.livros.find({editora: "Forgus"})
Enter fullscreen mode Exit fullscreen mode

Vamos usar insertMany para criar três livros e deletá-los usando deleteMany().

db.membros.insertMany([
  {titulo: "Livro para excluir I", autor: "Rod Zandonadi", editora: "Forgus", lancamento: new Date("2022-02-07")},
  {titulo: "Livro para excluir II", autor: "Rod Zandonadi", editora: "Forgus", lancamento: new Date("2023-02-07")},
  {titulo: "Livro para excluir III", autor: "Rod Zandonadi", editora: "Forgus", lancamento: new Date("2022-02-07")},
])
Enter fullscreen mode Exit fullscreen mode
db.minha_colecao.deleteMany({ editora: "Forgus" })
Enter fullscreen mode Exit fullscreen mode

Falta agora conferir se todos os livros da editora Forgus foram excluí-dos, com o comando find:

db.livros.find({editora: "Forgus"})
Enter fullscreen mode Exit fullscreen mode

Contar documentos no **MongoDB:**

Esse é um bônus no nosso CRUD.

O comando countDocuments retorna o número de documentos que correspondem ao filtro especificado.

db.minha_colecao.countDocuments({filtro})
Enter fullscreen mode Exit fullscreen mode

Para saber quantos livros da editora Griots temos em nosso sistema, basta usar o comando da seguinte forma:

db.livros.countDocuments({editora: "Griots"})
Enter fullscreen mode Exit fullscreen mode

Esses são apenas alguns comandos básicos do MongoDB para começar. O *MongoDB* oferece uma ampla variedade de recursos e comandos avançados para manipulação de dados. Se vocês gostarem do artigo, trarei mais tutoriais para nos aprofundarmos no MongoDB.

Abração pessoal, e até a próxima.

Top comments (0)