Skip to main content

Introdução ao MongoDB

MongoDB

MongoDB é um sistema de banco de dados NoSQL orientado a documentos, que armazena dados em um formato semelhante ao JSON, chamado BSON. É conhecido por sua flexibilidade e escalabilidade, tornando-o uma escolha popular para aplicativos modernos e em tempo real.

1. Elementos do MongoDB​

  • Database: É o contêiner de alto nível que armazena coleções de documentos. Um único servidor MongoDB pode conter vários bancos de dados.
  • Collections: São agrupamentos de documentos, semelhantes às tabelas em bancos de dados relacionais. Uma coleção pode conter documentos com esquemas diferentes.
  • Documentos: São registros individuais armazenados em uma coleção, representados em formato BSON. Cada documento possui um campo "_id" único que atua como chave primária.

2. Primeiros passos com MongoDB​

2.1. Instalação​

tip

Embora haja duas formas de instalação para o mongoDB (container ou pacote de sistema), sugiro fortemente instalar utilizando o container.

2.1.1. Usando containers​

Para rodar o mongodb utilizando containers, primeiro precisamos baixar a imagem do container:

docker pull mongodb/mongodb-community-server:6.0-ubi8
warning

Note que o comando acima configura a versão 6.0-ubi8 do mongodb. Tipicamente utilizamos a tag latest para esse tipo de imagem. Infelizmente, essa tag não está disponível para essa imagem.

Sad Gon =(

A seguir, vamos rodar o container com:

docker run --name mongodb -d -p 27017:27017 mongodb/mongodb-community-server:6.0-ubi8

Isso vai fazer com o que mongodb fique disponível na porta 27017. A partir de agora, você pode interagir com a instância do mongodb utilizando o mongosh. A instalação do mongosh estará na próxima seção.

2.1.2. Instalando o pacote do mongodb​

Usar o mongodb instalando o pacote é tão simples quanto usar o seu gerenciador de pacotes para instalá-lo e posteriormente iniciar um serviço do systemd

Primeiro vamos instalar os pacotes necessários:

paru -S mongodb-bin mongosh-bin

A seguir, habilite o serviço do mongodb usando:

sudo systemctl enable --now mongodb

2.1.3. Mongosh​

Para testar nossa instalação e seguir para a etapa de operações e comandos básicos do mongodb, você deve executar o mongo shell; esta é a aplicação de terminal que permite a interação com o seu banco de dados mongodb.

mongosh

2.2. Operações básicas​

warning

Atenção!! Os comandos abaixo só vão funcionar se você estiver rodando o mongosh

Lembrando que, para rodar o mongosh, use:

mongosh

2.2.1. Conectar ao MongoDB:​

mongosh "mongodb://localhost:27017"

2.2.2. Listar bancos de dados:​

show dbs

2.2.3. Listar coleções:​

show collections

2.2.4. Sair do mongosh:​

exit

2.2.5. Criar um banco de dados:​

use nomeDoBancoDeDados

2.2.6. Criar uma coleção:​

db.createCollection("nomeDaColecao")

2.2.7. Inserir documentos:​

db.nomeDaColecao.insertOne({ chave: "valor", chave2: "valor2" })
db.nomeDaColecao.insertMany([{ chave: "valor3" }, { chave2: "valor4" }])

2.2.8. Buscar documentos:​

db.nomeDaColecao.find({})
db.nomeDaColecao.find({ chave: "valor" })
db.nomeDaColecao.find( { chave: { $in: [ "oi", "tchau" ] } } )
db.movies.find( { countries: "Mexico", "imdb.rating": { $gte: 7 } } )
db.movies.find( {
year: 2010,
$or: [ { "awards.wins": { $gte: 5 } }, { genres: "Drama" } ]
} )

2.2.6. Atualizar documentos:​

db.nomeDaColecao.updateOne({ chave: "valor" }, { $set: { chave2: "novoValor" } })
db.nomeDaColecao.updateMany({}, { $set: { chave3: "valorComum" } })

2.2.7. Excluir documentos:​

db.nomeDaColecao.deleteOne({ chave: "valor" })
db.nomeDaColecao.deleteMany({ chave3: "valorComum" })

Lembre-se de substituir nomeDoBancoDeDados, nomeDaColecao, chave, valor, etc., pelos nomes e valores apropriados para o seu caso de uso específico.

2.3. Utilizando o pymongo​

Para instalar a biblioteca de python para uso síncrono do mongoDB, instale-a com:

pip install pymongo

A seguir, crie um arquivo .py e preencha-o com o código abaixo:

from pymongo import MongoClient

# Conexão com o MongoDB
client = MongoClient('mongodb://localhost:27017/')
db = client['meu_banco']

# Inserção de documentos
colecao = db['minha_colecao']
colecao.insert_one({'nome': 'João', 'idade': 30})
colecao.insert_many([{'nome': 'Maria', 'idade': 25}, {'nome': 'Pedro', 'idade': 35}])

# Busca de documentos
for doc in colecao.find({'idade': {'$gt': 30}}):
print(doc)

# Atualização de documentos
colecao.update_one({'nome': 'João'}, {'$set': {'idade': 31}})

# Exclusão de documentos
colecao.delete_one({'nome': 'Pedro'})

# Criação de um índice TTL
colecao.create_index([('data_criacao', 1)], expireAfterSeconds=3600)

Neste exemplo, utilizamos a biblioteca PyMongo para interagir com o MongoDB. Primeiro, conectamos ao banco de dados e criamos uma coleção. Em seguida, realizamos operações de inserção, busca, atualização e exclusão de documentos. Por fim, criamos um índice TTL para que os documentos sejam automaticamente excluídos após uma hora.

3. Desempenho​

3.1. Desempenho de busca (índices)​

Indexes são estruturas de dados especiais que melhoram a velocidade das operações de busca. Sem índices, o MongoDB precisa realizar uma varredura completa da coleção para encontrar os documentos correspondentes. Com índices, o MongoDB pode limitar a busca a uma parte menor dos dados.

3.2. Index TTL (Time to live)​

O Index TTL é um recurso que permite definir um tempo de vida para os documentos. Após o período especificado, os documentos são automaticamente excluídos do banco de dados. Isso é útil para dados que têm relevância temporária, como sessões de usuário ou logs.

4. Criando schemas MongoDB​

Autoestudo

5. Modelagem de dados com MongoDB​

Autoestudo