Introdução ao MongoDB

Tempo de Leitura ~7 minutos

Recentemente tive a oportunidade de conhecer e utilizar o Mongodb em um projeto pessoal de Internet das Coisas, e isso me motivou a relacionar os principais comandos básicos do Mongodb, tendo como principal finalidade ajudar quem está iniciando com esse novo banco de dados NoSQL.

#Instalação do MongoDB

A documentação do MongoDB é bem completa e detalhada, sendo assim, vamos listar abaixo alguns links diretos para você conseguir instalar em seu computador.

Instalando MongoDB no Windows

Instalando MongoDB no Linux

Instalação do MongoDB no Mac

Se você seguiu os passos corretamente, meus parabens… Já temos o Mondodb instalado e pronto para executar nossos comandos.

#Tudo pronto para começarmos????

Abra o seu terminal e execute o seguinte comando:

mongod

ou

sudo service mongod start

Observação importante:

Se vocẽ por acaso fechar o terminal, o serviço do Mongodb irá cair, então para que tudo ocorra perfeitamente abra outra janela do terminal para prosseguir com os proximos comandos. :)

#Como se conectar ao MongoDB?

Para conectar no MongoDB, basta executar o comando abaixo:

mongo

Simples!!!! Estamos conectado no MongoDB. :-)

#Como criar um db (database)?

Para criarmos uma nova base de dados o comando é: use nomeDaSuaBase

Exemplo:

use meuBanco

#Como listar todas as databases?

Para listarmos todas as databases o comando é: show dbs

#Como acessar um determinado database?

Criei um database chamado meuBanco, para conectarmos a ele executamos o seguinte comando:

use meuBanco

Perai??? Para conectarmos ao db usamos o mesmo comando para criar o database???

Sim amiguinhos… Porém se atentem para não acabar criando outros dbs e acabar se confundindo na hora de usa-los, por exemplo meuBancoo (letra duplicada “o”).

#Como saber em qual db estou usando no momento?

Quando quisermos saber em qual db estamos conectados no momento usamos o comando:

db

#Como criar uma collection?

Antes de tudo verifique se esta conectado no db que criamos meuBanco, após isso para criarmos uma collections usamos o comando db.createCollection(nomeDaCollection).

Vamos criar a collection usuarios.

db.createCollection( "usuarios" )

Após a execução do médoto, você terá o seguinte retorno de sucesso:

{ "ok" : 1 }

Agora temos nossa estrutura de dados.

#Como listar todas collections criadas na base de dados?

Para realizar esse procedimento usamos o comando:

show collections

#Como inserir (insert) dados em nossa (collection) no MongoDB?

Para inserir os dados em uma collection, utilizamos o método, db.nomeDaCollection.insert(jsonQueVoceQuerInserir).

Agora vamos inserir uma pessoa na coleção usuarios:

db.usuarios.save( { nome:"Marcelo" , sobrenome:"Alves" } )

Agora vamos inserir uma pessoa com um telefone na mesma coleção:

db.usuarios.save( { nome:"João" , sobrenome:"Silva" , telefone:"1234-5678" } )

ou também podemos inserir uma pessoa com vários telefones criando um array para o campo:

db.usuarios.save( { nome:"Jean" , sobrenome:"Suissa" , telefone: [ "9898-9898" , "1234-5678" ] } )

Caso a collection usuarios não existir, ela será criada automaticamente.

#Agora vamos listar as pessoas

db.usuarios.find()

Onde será listados todos os documentos armazenados na coleção.

Podemos observar que o campo “_id”, foi criado automaticamente, ele é um identificador único de cada documento.

#Filtros

Podemos filtrar a busca fornecendo um objeto, no caso iremos buscar por todas as pessoas com o nome Marcelo

db.usuarios.find( { nome:"Marcelo" } )

Como todas as buscas existem várias opções de filtragem podemos começar com os clássicos:

db.usuarios.find( { idade : { "$gt" : 18 } } ) //maior que 
db.usuarios.find( { idade : { "$lt" : 18 } } )//menor que 
db.usuarios.find( { idade : { "$gte" : 18 } } )//maior ou igual que
db.usuarios.find( { idade : { "$lte" : 18 } } )//menor ou igual que 
db.usuarios.find( { idade : { "$ne" : 18 } } )//diferente 

Um pouco diferente do que estamos acostumados. No objeto de pesquisa especificamos o campo que queremos fazer a comparação e atribuímos a ele um outro objeto que possui como campo a comparação queremos fazer e o valor.

Os operadores OU e E que são um pouco difícil de entender já que a posição parece mais estranha veja-os:

db.usuarios.find( { "$or": [ { nome:"Marcelo" } , { nome:"Suissa" } ] } )

Temos o objeto de pesquisa com o campo $or que recebe como valor um array e irá executar o operador OU para cara um destes valores. Também poderá ser utilizado juntamente com qualquer outra comparação como:

db.usuarios.find( { telefone:"1234-5678" , "$or": [ { nome:"Marcelo" } , { nome:"Suissa" } ] } )

Neste caso buscará todas as pessoas que tiverem o telefone “1234-5678″ E o nome for Marcelo OU Suissa.

A operação AND pode ser feita de duas maneiras, se for com dois campos diferentes é bastante simples

db.usuarios.find( { nome:"Marcelo" , sobrenome:"Alves"} )

Mas se tivermos utilizando o mesmo campo é necessário utilizar o formato abaixo(que apenas funciona na v2.0+):

db.usuarios.find( { "$and": [ { nome : { "$ne" : "Marcelo" } } , { nome : { "$ne" : "Suissa" } } ] } )

Também no caso de se estar tentando estipular um intervalo de valores também pode ser feio assim:

db.usurios.find( { idade : { $gte : 18 , $lte : 29 } } )

Também para pesquisa temos o exists que buscas apenas os documentos que tem ou não tem um determinado campo (semelhante ao not null)

db.usuarios.find( { telefone : { $exists : true } } )

ou

db.usuarios.find( { telefone :{ $exists : false } } )

E o in que busca todos os documentos em que o campo for igual a qualquer um dos valores contidos no array

db.pessoas.find( { nome : { $in :[ "Marcelo" , "Alves" ] } } )

Bom acho que era isso, espero que tenha conseguido passar um pouco do meu conhecimento para vocês. Caso ainda tenha dúvidas, poderá consultara documentação do MongoDB .

Conectando display Oled com Nodemcu

MongoDB é um banco orientado a documentos open-source que permite alta performance, alta disponibilidade e escalabilidade automática. - 10gen. Continue Lendo

Como fazer deploy de Apps para o Heroku

Published on June 15, 2016

Minha porta envia email

Published on November 03, 2015