Seções iMasters
MongoDB

Como usar o console do MongoDB

Criei esse artigo a partir da segunda aula que dei sobre MongoDB na faculdade e achei interessante repartir esse conhecimento com o resto do público.

Antes de iniciarmos, precisamos iniciar uma instância do servidor do MongoDB. Para o Windows é só você seguir a tela abaixo; para o linux: sudo mongodb start


Inicialmente usaremos o comando para setar qual database usaremos, caso ela não existe será criada.

use faculdade

Caso você já possua uma database criada e não lembre o nome, pode usar o comando:

show dbs

E para ver os nomes das collections, após escolher qual database quer, com o comando use, pode usar o comando:

show collections
//igual a db.getCollectionNames()

Após o primeiro passo, já poderemos inserir dados na nossa database faculdade e em qual collection eu desejar, lembrando que collection tem uma função parecida com as tabelas dos bancos relacionais.

db.collection.insert(json);

No nosso exemplo para a collection professores ficará:

db.professores.insert({nome: ‘Jean’, idade:26, disciplinas:[‘Tecnicas de Programacao’, ‘Topicos Avancados’], sexo: ‘m’})


No exemplo acima, após a inserção de 3 professores, eu os listo todos com o comando:

db.professores.find()

Então nosso comando find() nos retornará a lista de todos os registros. Se eu quiser passar alguma cláusula para a busca, posso fazer da seguinte forma:

db.professores.find({nome: ‘Jean’})
//db.professores.find({nome: ‘Jean’, idade:26})

Lembrando que se nossa consulta for falsa, ele não escreverá nenhum resultado, como podemos ver na tela abaixo:


Beleza, então já consigo buscar algum registro com um valor exato. Porém, para fazermos comparações entre valores, usaremos uma sintaxe um pouco diferente. Vamos ter como exemplo a busca por professores com idade acima de 30 anos.

db.professores.find({idade: {$gt:30}})

Como podemos notar com o exemplo, utilizamos um operador condicional o $gt que significa great than, ou maior que, em português.

Também podemos usar os seguintes operadores condicionais: $gte, $lt, $lte, $all, $in, $nin, $ne, $exists, $mod

Ou seja podemos ver que na função find() podemos passar 1 paramêtro que vai fazer a comparacao de valores para delimitar a busca. Tendo em vista que se utilizarmos operadores de comparação como >, >=, <, <= e outros, teremos que usar a seguinte regra:

db.collection.find({campo: {$operador: valor}})


Como eu disse anteriormente, podemos passar um paramêtro para a comparação de valores, mas também posso passar outro parâmetro, informando quais campos eu quero que retornem na busca; neste caso, nosso exemplo ficará:

db.collection.find({campo: {$operador: valor}}, {campo1: 1, campo2: 1, campoN: 1})

Como visto no exemplo acima ele sempre retorna o _id de cada registro, para que isto não ocorra podemos repassar no paramêtro dos campos _id:0

Porém, caso eu não queira comparar nenhum valor, terei que passar null no primeiro paramêtro, podendo ficar da seguinte maneira:

db.collection.find(null, {campo1: 1, campo2: 1, campoN: 1})


Uma outra função bem útil é a ordenação da busca, que se assemelha ao ORDER BY do SQL. No MongoDB temos a função sort() que recebe um paramêtro para ordernar.

db.collection.find(null, {nome:1, idade:1, _id:0}).sort({idade:1})

Onde passaremos o 1 paras ASC ou seja, do menor para o maior, ou -1 que é o DESC, do maior para menor.

Além de ordenar, também podemos limitar a busca, parecido com o LIMIT do SQL, passando um valor inteiro para a função limit().

db.collection.find(null, {nome:1}).sort({idade:1, nome:-1}).limit(2)

Outra função que auxilia ao limit() é a skip(), que receberá um valor inteiro para pular até aquele registro. Até agora, nossas funções convertidas em SQL ficam assim:

select nome, idade from professores ORDER BY idade ASC LIMIT1,2

Bom, já aprendemos como inserir dados e listá-los esta na hora de modificarmos os registros. Para isto, utilizamos a função update({busca}, {atualizacao}).

 
Assim como temos o modificador $set, também temos o $unset, que elimina a chave.

db.professores.update({nome: ‘Jean’}, {$unset: {disicplinas: 1}})

Também podemos apenas incrementar ou decrementar um valor inteiro utilizando o modificador $inc

db.professores.update({nome: ‘Jean’}, {$inc: {idade: 5}}) 
//incrementa em 5 a idade do professor Jean
db.professores.update({nome: ‘Jean’}, {$inc: {idade: -5}})
//incrementa em 5 a idade do professor Jean

Agora para removermos documentos, utilizamos a função remove(json). Onde passamos como parâmetro a clausula de comparação.

Porém, caso queiramos limpar toda a collection, é mais rapido usando drop()


Com essas funções já conseguimos manipular o banco de uma forma básica, entretanto, o MongoDB nos provém inúmeros outros recursos que veremos nos próximos artigos. Até lá.

Comente também

35 Comentários

Juarez

Parabéns Jean, você é o cara do NOSQL!!!

Djalma Araújo

Muito massa. Estudei mongo um dia desses, to esperando algum projetinho pra implementar com ele.. =)

Confesso que o que eu acho chato é mexer na vps pra configurar.. um LAMP da vida deveria existir pro mongo =P

    Jean Nascimento

    Realmente no linux foi meio chato aqui porém meus alunos conseguiram na moral via sudo apt-get mesmo

    Agora no Windows é ridiculo vc só cria 2 pastas para ele joga e roda. Mais fácil que isso só html ehehhehe

Rafael Alves Correa

Muito bom! favoritei aqui para indicar aos colegas!

Luiz Tiago Oliveira

Parabéns doutor, muito bom!
O único defeito são as imagens com interface do Ruindows! =P

Congratz, NoMAN!!

Alberis Fernandes

Muito bom, já favoritei aqui. Bem explicativo, ótimo para quem está iniciando. Realmente o Suisa é o cara do NoSQL.

Antonio Henrique

Aeeeew Jean .. esse eh meu professor o cara mais foda na programação web q eu conheço…parabens pelo artigo fiko mto mto bom…depois vc m ensina heim ^^

Abrassss Professor c vemo na facul

Antonio Henrique

Hericson Ramos Forti

Venho acompanhando trabalho do Suissa a algum tempo …e até trocamos algumas ideias … e só tenho que admira o cara … faz 1001 coisas e alem de escreve artigo muito bom coisa e ainda participa do desconferencia … num sei onde arruma tempo pra isso mais tudo bem…

Vlw Suissa muito bom…!!!!
continua assim vc só tem a ganhar!!!

James

MESTRE Suissa hoho mais um artigo top!
Parabéns mestrão nóis!

Lucas Segura

PARABES! mto bom o tutorial! instalei o mongoDB no ubuntu via apt-get e tah bombeta aki! as queries sao mto simples de serem executadas comparadas aos bancos relacionais! ja tinha interesse pelos bancos não-relacionas, mas agora optei pelo mongo! thanks pela ajuda! espero o proximo tutorial ;]]

    Jean Nascimento

    Que bom que gostou amigo qualquer dúvida pode me enviar um email ou participar da nossa lista no google: nosqlbr

Leo Balter

Super bem explicado! Está 100%! Queria muito saber sobre isso e agora já posso aplicar em meus trabalhos e experimentos, vou também falar com a galera da empresa que podemos aplicar isso em algumas ferramentas nossas.

Você é o cara, Suíssa! Arrebentou! Parabéns!

Flavio Steffens

Muito bom, Suissa!

Esse cara é FERA :D

Abração

Flávio Steffens
http://www.woompa.com.br

Marcus Sá

Pô cara muito bom…
Com certeza esse material vai virar um tipo de referência rápida pra quem tá estudando!

Abraços!

Show de bola Suissator.
Cada vez melhor ;)
Valeu por compartilhar com a galera!

    Jean Nascimento

    O que eu puder para divulgar o NOSQL, principalmente o MongoDB, farei ;D

Ciro M.

Muito bem explicado man! parabéns!

Rodrigo Sartori Jarouche

Muito esclarecedor!

Favoritado, parabéns!

Leandro Segatto

Este artigo ficou ótimo, muito bom mesmo tem tanta coisa pra aprender apesar deu trabalhar mais com parte física, fico muito feliz em te-lo como Prof, com certeza nosso melhor Prof. de parte Web e de tantas mais areas ! Abraço Jean

    Jean Nascimento

    Valeuuuuuu Leandro, gosto muito de poder passar meus conhecimentos a vocês!

Renato Tavares

Como sempre foda!

parabéns brodi

Ricardo Schroeder

Olá, existe algum operador de condição parecido com o Like do SQL? Ou é possível somente através de funções passadas para a query? Ótimo artigo, parabéns!!

    Jean Nascimento

    Para o like vc terá que usar a função find, utilizando de expressões regulares.

Wladimir Raphael

Olá, alguém teria um tutorial ou apostila, explicando como usar o mongodb no php ? Preciso configurar o wampsever ? Preciso de alguma class ?

Desde já agradeço.

Wladimir Raphael

Olá, alguém teria um tutorial ou apostila, explicando como usar o mongodb no php ? Preciso configurar o wampsever ? Preciso de alguma class ?

Desde já agradeço.

Wladimir Raphael

Olá, alguém teria um tutorial ou apostila, explicando como usar o mongodb no php ? Preciso configurar o wampsever ? Preciso de alguma class ?

Desde já agradeço.

Roger

select b.nome, b.email from log_result as a, destinatario as b 
where b.id = a.destinatario_fk 
and a.evento = 0
and a.destinatario_fk not in (select destinatario_fk from log_result where evento = 1)

Como ficaria esse sql no mongo ?

Tiago

Parabens cara, muito bom….

Cezar Luiz

Revivendo um pouco o post, há algum tempo eu venho querendo estudar outras alternativas para o SQL, e o mongoDB é um dos mais fáceis para estudar noSql, o que eu achei bem parecido, foi uma função do WordPress para fazer buscas customizadas, onde passam-se arrays, que quando fiz achei incrivel, e todos os bancos poderiam ser daquele jeito, e lembrei de uma vez que vi o mongoDb, que fazia as buscas parecido com JSON, e agora voltei a estudar e estou fascinado! Como é simples!

Parabéns pelo artigo Suissa!

Qual a sua opinião?