Resumo ─ Módulo Persistência de Dados, Versionamento e Implantação ─ Bootcamp Desenvolvedor FullStack da IGTI
- Sobre
- Download e instalação
- Comandos básicos
- Coleções
- Criar
- Consultar
- Operadores lógicos
- Operadores de comparação
- Atualizar
- Operadores de atualização
- Deletar
- BulkWrite
- Index
- Agregação
- Mais informações
- Autor
- Meta
O MongoDB é um banco de dados NoSQL orientado à objetos que vem sendo adotado tanto em startups quanto em pequenas e grandes coorporações.
A organização dos dados no MongoDB é definida conforme a hierarquia abaixo:
- Banco de dados: pode conter uma ou mais coleções;
- Coleções: pode conter diferentes tipos de documentos;
- Documentos: pode conter tuplas de chave e valor em lista, vetor ou uma referência à um documento;
- Campos: tuplas, vetores ou referências a outros documentos.
- Realize o download da versão community no site do MongoDB;
Link: MongoDB Community Server
- Para facilitar o manuseio do mongo no windows, adicione as variaveis de ambiente o path da pasta bin;
- Verifique se está tudo funcionando executando o comando
mongo --version
no seu terminal. Exemplo do que deve ser exibido:MongoDB shell version v4.2.8 git version: 43d25964249164d76d5e04dd6cf38f6111e21f5f OpenSSL version: OpenSSL 1.1.1 11 Sep 2018 allocator: tcmalloc modules: none build environment: distmod: ubuntu1804 distarch: x86_64 target_arch: x86_64
- Definir um diretório para armazenamento dos dados;
mongod --dbpath="X:\...\Exemplo"
- Acessar o banco localmente;
mongo -host localhost:27017
- Acessar uma base de dados, caso a mesma não exista, automaticamente é criada após a inserção de um documento na base citada;
use DATABASE
- Exibir as bases de dados existentes;
show dbs
- Exibir a base que está sendo manipulada;
db
- Remover a base de dados atual do servidor MongoDB.
db.dropDatabase()
- Criar uma coleção na base de dados;
db.createCollection(name, options);
name
: nome da coleção;options (opcional)
: define as configurações da coleção;Campo Tipo Descrição capped boolean Define uma coleção limitada, se true
, o campo size deve ser definidosize number Tamanho em bytes
para definir o limite da coleçãomax number Define o limite máximo de documento na coleção validator document Documento que define regras e exceções da documentos validationLevel string Define o rigor das regras de validação aplicadas aos documentos validationAction string Determina se acusa erros em documentos inválidos ou apenas alerta sobre as violações (Permite documentos inválidos serem inseridos)
- Listar as coleções existentes;
show collections;
- Remover uma coleção da base de dados.
db.COLLECTION.drop();
- Inserir apenas um documento na base de dados;
db.COLLECTION.insertOne({nome: "Exemplo 1", tipo: 1, valor: 10});
- Inserir múltiplos documentos objeto na base de dados;
db.COLLECTION.insertMany([ {nome: "Exemplo 2", tipo: 2, valor: 7.5}, {nome: "Exemplo 3", tipo: 3, valor: 9} ]);
- Inserir um ou mais documento na base de dados.
db.COLLECTION.insert({...});
- Retorna todos os documentos existentes na coleção;
db.COLLECTION.find(query, porjection);
query (opcional)
: quais filtros serão utilizados;db.COLLECTION.find({nome: "Exemplo 1"}, {}); # Output: # { "_id" : "5f022654f66a26475d4fbf8c", "nome" : "Exemplo 1", "tipo" : "1", "valor" : 10 }
projection (opcional)
: quais campos serão retornados;# 0: remove # 1: permanece db.COLLECTION.find({}, {_id: 0, nome: 1}); # Output: # { "nome" : "Exemplo 1" } # { "nome" : "Exemplo 2" } # { "nome" : "Exemplo 3" }
- Adicionar limite de documentos que serão retornados;
db.COLLECTION.find().limit(n);
- Pular alguns documentos na consulta;
db.COLLECTION.find().skip(n);
- Ordenar os valores da consulta de acordo com o campo passado;
# 1: ascendente # -1: descendente db.COLLECTION.find().sort({_id: 1});
- Exibir os resultados de forma mais organizada;
db.COLLECTION.find().pretty();
- Retornar apenas um registro.
db.COLLECTION.findOne(query, projection);
- Retorna tudo que atende as condições;
# $and db.COLLECTION.find({$and: [{nome: ...}, {valor: ...}]});
- Retorna tudo que atende uma das confições;
# $or db.COLLECTION.find({$or: [{tipo: ...}, {valor: ...}]});
- Inverte a condição especificada;
# $not db.COLLECTION.find({tipo: {$not: {$eq: "1"}}});
- Retorna tudo que não atender as condições.
# $nor db.COLLECTION.find({$nor: [{nome: ...}, {valor: ...}]});
- Igual à ...
# $eq db.COLLECTION.find({tipo: {$eq: 10}}, {_id: 0});
- Maior que ...
# $gt db.COLLECTION.find({tipo: {$gt: 5}}, {_id: 0});
- Maior ou igual ...
# $gte db.COLLECTION.find({tipo: {$gte: 7}}, {_id: 0});
- Pertence à ...
# $in db.COLLECTION.find({nome: {$in: ["Exemplo 4", "Exemplo 5"]}}, {_id: 0});
- Menor que ...
# $lt db.COLLECTION.find({tipo: {$lt: 5}}, {_id: 0});
- Menor ou igual ...
# $lte db.COLLECTION.find({tipo: {$lte: 7}}, {_id: 0});
- Não é igual ...
# $ne db.COLLECTION.find({tipo: {$ne: 3}}, {_id: 0});
- Não pertence à ...
# $nin db.COLLECTION.find({nome: {$nin: ["Exemplo 1", "Exemplo 2"]}}, {_id: 0});
- Atualiza um documento especifico em uma coleção;
query
: busca a primeira ocorrencia do documento de acordo com os parâmetros na query;update
: quais os novos valores que serão modificados;
db.COLLECTION.updateOne({nome: "Exemplo 1"}, {$set: {tipo: 2, valor: 5.99}});
- Atualiza varios documentos de uma coleção de acordo com os parâmetros na query;
# Atualizando todos os documentos do tipo 2 db.COLLECTION.updateMany({tipo: 2}, {$set: {valor: 2.50}});
- Sobrescreve todo o documento por um novo;
# Sobrescrevendo o documento de id 1 por um novo documento db.COLLECTION.replaceOne({_id: ObjectId("5f022654f66a26475d4fbf8c")}, { nome : "Exemplo 99", tipo : 99, valor : 99 });
- Modifica um ou mais documentos em uma coleção.
db.COLLECTION.update(query, update, options);
- Incrementa o valor atual de um campo;
# $inc # Incrementando 10 ao valor atual db.COLLECTION.updateOne({nome: "Exemplo 1"}, {$inc: {valor: 10}});
- Atualiza o valor de um campo ou cria um novo campo;
# $set db.COLLECTION.updateOne({nome: "Exemplo 1"}, {$set: {tipo: 5, valor: 5.99}});
- Atualiza um campo data com a data e hora atual;
# $currentDate # Adicionando o campo modificacao com a data e hora atual em todos os documentos da coleção db.COLLECTION.updateMany({}, {$currentDate: {modificacao: true}});
- Utilizado para remover campos de um documento;
# $unset # Removendo campo modificacao de todos os documentos da coleção db.COLLECTION.updateMany({}, {$unset: {modificacao: 1}});
- Multiplica o valor de um campo.
# $mul # Multiplicando valor atual por 2 db.COLLECTION.updateOne({nome: "Exemplo 1"}, {$mul: {valor: 2}});
- Deleta a primeira ocorrencia do documento de acordo com os parâmetros na query;
# Deletar o documento cujo id é 5f022654f66a26475d4fbf8c db.COLLECTION.deleteOne({_id: ObjectId("5f022654f66a26475d4fbf8c")});
- Deletar vários documentos de acordo com o filtro estabelecido.
# Deletar os documentos cujo tipo é 3 db.COLLECTION.deleteMany({tipo: 3});
Executar comandos em massa.
db.COLLECTION.bulkWrite([operacao1, operacao2, ...], options);
# Exemplo de uma execução comandos em massa
db.COLLECTION.bulkWrite(
[
{
insertOne: {
"document": {
nome: "Exemplo 1",
tipo: 1,
valor: 5.99
}
}
},
{
insertOne: {
"document": {
nome: "Exemplo 2",
tipo: 2,
valor: 3.25
}
}
},
{
updateOne: {
"filter": {
nome: "Exemplo 3",
tipo: 3
},
"update": {
$set: {
valor: 9.85
}
}
}
},
{
insertOne: {
"document": {
nome: "Exemplo 4",
tipo: 2,
valor: 1.99
}
}
},
{
deleteOne: {
"filter": {
_id: ObjectId("5f0520e6b7407942726e4ce0")
}
}
},
{
...
}
], {ordered: true});
Estruturas de dados especiais que armazenam informações de um ou mais campos com um determinada ordenação. Facilitam e melhoram a busca por seus documentos.
- Exibe os índices criados de uma determinada coleção;
db.COLLECTION.getIndexes()
- Criando índice na coleção;
# 1: ascendente # -1: descendente db.COLLECTION.createIndex({tipo: 1}); # "text": índice do tipo text db.COLLECTION.createIndex({nome: "text"}); # Busca utilizando índice "text" db.COLLECTION.find({$text: {$search: "Exemplo"}}, {_id: 1});
- Removendo índice da coleção.
# Um índice específico db.COLLECTION.dropIndex({nome: -1}); # Todos os índices db.COLLECTION.dropIndexes();
- Agrupa valores de vários documentos e executa operações nos dados agrupados para retornar um único resultado.
Operações Descrição $project Define os campos que serão carregados do documento $match Filtra os documentos que serão utilizados na agregação $group Realiza a agregação com operações de agregação (sum, abs, avg, ...) $sort Realiza a ordenação do resultado apresentado $skip Pula os documentos que não serão agregados $limit Limita o número de documentos que serão agregados db.COLLECTION.aggregate([ {$project: {nome, valor}}, {$math: {tipo: 1}}, {$group: {_id: {tipo:"$tipo"}, total: {$sum: "$valor"}}}, {$sort: {_id: 1, nome: -1}}, {$skip: 1}, {$limit: 100}, ]);
- Retorna a quantidade de registros em uma coleção de acordo com o filtro definido
# Menor precisão db.COLLECTION.count({tipo: 3}); # Maior precisão db.COLLECTION.countDocuments({tipo: 3});
- Retorna os campos distintos de uma coleção
db.COLLECTION.distinct({tipo: 1});
Para mais detalhes sobre o MongoDB e sua gama de funcionalidades, consulte a documentação em MongoDB Getting Started.
Aryosvalldo Cleef ─ linkedin ─ @cleefsouza
Made with 💚 by Cleef Souza