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á.