Olá meu caro leitor, presumindo que você já tenham lido a parte 1 deste tutorial e já possua o MongoDB devidamente instalado em sua máquina, vou mostrar abaixo alguns principios e comandos principais para listar, salvar, alterar e deletar itens de sua coleção.
Primeiramente vamos definir o escopo de nossa coleção, vamos criar uma agenda onde vamos inserir nossos contatos, a estrutura básica que um contato deve ter é o nome, telefone, email e uma lista de endereços.
Um endereço deve possuir rua, número, bairro, cidade e tipo (residencial ou comercial), estrutura bem simples somente para fixar os conceitos e as operações básicas.
Para realizar os comandos e testes abaixo eu utilizei o Visual Studio Code para editar os comandos e também usei o terminal de comandos que já vem integrado a ele para facilitar.
Para acessar esse terminal no VSC basta acessar o menu View->Integrated Terminal, agora vamos colocar a mão na massa!
Alguns comandos importantes:
- mongod –version (mostra a versão do MongoDB que está rodando em sua máquina);
- mongo (acessa o MongoDB em qualquer diretório);
- show databases (lista os databases criados).
A imagem abaixo ilustra a utilização dos comandos acima:
Para criar um database vamos utilizar o seguinte comando:
db.createCollection("Agenda")
Quando efetuar a criação de um database o MongoDB deve retornar uma mensagem de OK como na imagem abaixo:
No caso de precisar deletar uma base de dados execute os seguintes comandos:
Vamos agora inserir o primeiro contato em nossa agenda, para isso digite o comando:
use Agenda
Esse comando habilita seu database para edição.
Vamos agora digitar o comando de insert:
db.Agenda.insert({"nome": "Marcelo", "telefone":"(011) 982039191","email":"marcelo@teste.com"})
Se tudo correu bem o MongoDB deverá retornar uma mensagem :
WriteResult({ "nInserted" : 1 })
Vamos agora já verificar a operação de consulta, digite no terminal o seguinte comando:
db.Agenda.find();
O resultado deverá trazer todos os contatos cadastrados, porém listados de uma forma não amigável de leitura. Para tornar o resultado melhor digite o comando:
db.Agenda.find().pretty();
O pretty vai listar os registros e formatar o json facilitando a leitura e entendimento da estrutura.
A imagem abaixo demonstra as operações:
Vamos agora inserir outro registro, agora com endereços, note que o registro acima não possui endereços, é possivel incluir documentos com mais ou menos propriedades.
Uma observação, digitar os comandos no terminal pode ser ruim e desconfortável, você pode digitar os mesmos em seu editor preferido e colar no terminal para aplicar. No insert abaixo eu digitei os comandos em um arquivo .js que facilita a escrita e leitura e colei para aplicar no terminal:
Para deletar todos os registros de sua coleção basta digitar o seguinte código:
db.Agenda.remove({});
Depois de deletar todos os registros vamos inserir outros contatos na agenda para efetuar as operações de select, adicionei a propriedade profissão nos novos contatos, basta copiar e colar no prompt de comando para inserir:
db.Agenda.insert({ nome: "Marcelo", email: "marcelo@teste.com.br", telefone: "(011) 982039999", profissao: "Desenvolvedor", enderecos: [{ rua: "Rua teste marcelo", numero: "10", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "residencial" }, { rua: "Rua teste marcelo", numero: "10", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "comercial" } ] }); db.Agenda.insert({ nome: "Gustavo", email: "gustavo@teste.com.br", telefone: "(011) 982039999", profissao: "Engenheiro", enderecos: [{ rua: "Rua teste gustavo", numero: "10", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "residencial" }, { rua: "Rua teste gustavo", numero: "10", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "comercial" } ] }); db.Agenda.insert({ nome: "Joao", email: "joao@teste.com.br", telefone: "(011) 982039991", profissao: "Arquiteto", enderecos: [{ rua: "Rua teste joao", numero: "20", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "residencial" }, { rua: "Rua teste joao", numero: "20", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "comercial" } ] }); db.Agenda.insert({ nome: "Maria", email: "maria@teste.com.br", telefone: "(011) 982039992", profissao: "Secretaria", enderecos: [{ rua: "Rua teste maria", numero: "20", bairro: "Centro", cidade: "São Paulo", estado: "São Paulo", tipo: "residencial" }] }); db.Agenda.insert({ nome: "Pedro", email: "pedro@teste.com.br", telefone: "(011) 982039992", profissao: "Desenvolvedor", enderecos: [{ rua: "Rua teste pedro", numero: "20", bairro: "Centro", cidade: "Santos", estado: "São Paulo", tipo: "residencial" }] }); db.Agenda.insert({ nome: "Antonio", email: "antonio@teste.com.br", telefone: "(011) 982039992", profissao: "Veterinario", enderecos: [{ rua: "Rua teste antonio", numero: "20", bairro: "Centro", cidade: "Santos", estado: "São Paulo", tipo: "residencial" }] });
Como consultar dados?
Para consultar os dados é relativamente fácil, vou colocar alguns exemplos abaixo, já vimos acima a utilização do comando find() e do comando pretty().
Consultar todos contatos com o nome de “Antonio”
db.Agenda.find({ nome : "Antonio"}).pretty();
Consultar todos os contatos que possuem endereço comercial:
db.Agenda.find({"enderecos.tipo" : "comercial"}).pretty();
Consultar todos os contatos que residam na cidade de Santos:
db.Agenda.find({"enderecos.cidade" : "Santos"}).pretty();
Consultar todos os contatos que são engenheiros ou desenvolvedores:
db.Agenda.find({$or : [{"profissao": "Desenvolvedor"}, {"profissao": "Engenheiro"}]});
Consultar apenas um contato:
db.Agenda.findOne({"profissao": "Desenvolvedor"});
db.Agenda.find().sort({"nome" : 1});
db.Agenda.find().sort({"nome" : -1});
Limitando o número de registros que queremos visualizar:
db.Agenda.find().sort({"nome" : 1}).limit(3);
Consultar no MongoDB é relativamente fácil e ele possui muitos recursos para efetuar suas consultas, para maiores detalhes dê um pulo na documentação.
Como alterar registros?
Para alterar um registro vamos primeiramente localiza-lo usando o comando find e procurando pelo id:
db.Agenda.find({"_id" : ObjectId("58e3a68c64efe176a32c63f1")}).pretty();
O comando acima me retonou o contato com nome de “Antonio” e agora vou alterar o email do “Antonio” para “antonio.santos@teste.com.br”:
db.Agenda.update({"_id" : ObjectId("58e3a68c64efe176a32c63f1")}, {$set : {"email" : "antonio.santos@teste.com.br"}});
Como excluir registros?
Para excluir um registro basta utilizar o comando remove passando o id do objeto:
db.Agenda.remove({"_id" : ObjectId("58e3a68c64efe176a32c63f1")});
Essas foram algumas operações básicas com o MongoDB, existe muito mais opções para serem descobertas na documentação.
Todas essas operações foram feitas em linha de comando, muitas pessoas não gostam dessa abordagem e preferem aplicativos para operar um banco de dados como o sql developer ou o Toad para o ORACLE ou o Sql Server Management Studio para o SQL SERVER, o MongoDB possui alguns clients para operação, eu indico o uso do Robomongo como ferramenta de administração, é bem tranquilo e fácil de operar.
No próximo artigo desta série vamos integrar o MongoDB com o .NET, espero ter passado um pouco de conhecimento e facilitar a todos os leitores a imersão no mundo NOSQL!
Dúvidas e opiniões são sempre bem vindas!
Até mais!
Marcelão, parabéns pelo artigo. Sucesso sempre !
Mano!!! quanto tempo hein… valeu Rodrigão!!! abraços velho.
Muito boa a sua postagem, parabéns!
Obrigado Reginaldo!! Sucesso!
Ótimo post sobre esse tipo de banco de dados. Parabéns e agora tem um novo usuário ativo no seu site.
Obrigado Alexandre, precisando estamos ae!