SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Iniciando e conhecendo
Edemilson Luiz Gonçalves
ede.goncalves88@gmail.com
https://www.facebook.com/edegoncalves
MONGODB
• C++
• JSON/BSON
• Replica
• Sharding
• GridFS
• Aggregation Framework
Terminologia: MYSQL e MONGODB
MYSQL
DATABASE
TABLE
ROWS
QUERY
INDEX
PARTITION
MONGODB
DATABASE
COLLECTION
DOCUMENT JSON
QUERY
INDEX
SHARD
BANCO DE DADOS E COLEÇÃO
Selecionando o banco de dados que iremos utilizar:
use bancodedados
Visualizando os nossos bancos de dados:show dbs
Executando comandos:db.colecao.comando()
ex:
db.produtos.drop() // Apaga a coleção
db.produtos.remove() // Limpa a coleção
COMANDO INSERT
Inserimos um documento novo no Banco de dados utilizando o comando insert
$ db.pessoas.insert({"nome": "eduardo", "idade": 15, "saldo": 45.50})
Podemos utilizar valores que estão em variáveis
$ var pessoa1 = {"nome": "eduardo", "idade": 15, "saldo": 45.50};
$ db.pessoas.insert(pessoa1);
COMANDO SAVE
Podemos recuperar um documento, fazer as modificações necessárias e salvá-lo
novamente.
$ var pessoa1 = db.pessoas.findOne();
$ pessoa1.idade = 16;
$ db.pessoas.save(pessoa1);
COMANDO CURSOR
Todas as buscas feitas através do find() irá retornar um cursor, vamos
repeti-lo para retirarmos os valores.
$ var cursor = db.pessoas.find();
A linguagem utilizada no mongodb é o javascript então vamos usar o comando
forEach()
$ cursor.forEach(function(pessoa){
printjson(data.nome)
})
O comando acima irá listar os nomes de todas as pessoas cadastradas em nossa
coleção.
COMANDO FIND
Para realizar consultas no MongoDB utilizamos duas funções:
find() // Retorna um array, mesmo sendo apenas 1 documento.
findOne() // Retorna um único documento.
A sintaxe para fazermos consultas é:
$ db.pessoas.find({clausulas}, {campos});
$ db.pessoas.findOne({clausulas}, {campos});
ex:
$ db.pessoas.findOne({"nome": "eduardo"}, {"idade": 1}) // Selecione apenas
o campo idade.
$ db.pessoas.findOne({"nome": "eduardo"}, {"idade": 0}) // Selecione o
documento sem o campo idade.
OPERADORES
$lt
$ db.pessoas.find({"idade": {$lt: 18}})
Retorna os documentos com valores menores que 18
$lte
$ db.pessoas.find({"idade": {$lte: 18}})
Retorna os documentos com valores menores ou igual a 18
$gt
$ db.pessoas.find({"idade": {$gt: 18}})
Retorna os documentos com valores maiores que 18
$gte
$ db.pessoas.find({"idade": {$gte: 18}})
Retorna os documentos com valores maiores ou igual a 18
OPERADORES
$or
$ db.pessoas.find({"idade": 15, $or: [{"nome": "pedro"}, {"nome":
"eduardo"}]})
Buscamos um documentos em que a idade seja igual a 15 e o nome seja pedro ou
eduardo
$nor
$ db.pessoas.find({$nor: [{"nome": "pedro"}, {"nome": "eduardo"}]})
Buscamos um documentos em que o nome NÃO seja pedro ou eduardo
$and
$ db.pessoas.find({$and: [{"nome": "zeca"}, {"idade": {$lt: 15}}]})
Buscamos um documento em que nome seja zeca E idade menor que 15
OPERADORES
Existem campos que contém um array e alguns operadores para utilizarmos
neles
$ne
$ db.pessoas.find({cursos: {$ne: "mysql"}})
Buscamos dentro do campo cursos que é um array as pessoas que NÃO fizeram o
curso de mysql
$in
$ db.pessoas.find({cursos: {$in: ["mysql", "mongodb"]}})
Buscamos as pessoas que fizeram o curso de mysql ou mongodb, lembrando que o
$in espera sempre um array, mesmo que seja um único valor.
$nin
$ db.pessoas.find({cursos: {$nin: ["mysql", "mongodb"]}})
Retorna as pessoas que não fizeram curso de mysql ou mongodb. Documentos que
nenhum valor do array foi encontrado.
OPERADORES
$exists
$ db.pessoas.find({cursos: {$exists: 1}})
Busco os documentos que tenham o campo cursos
$all
$ db.pessoas.find({cursos: {$all: ["mysql", "mongodb"]}})
Ele funciona da mesma forma que o operador $in, a diferença é que precisa
existir todos os campos do array ou invés de apenas 1.
$size
$ db.pessoas.find({cursos: {$size: 3}})
Retorna os documentos no qual o tamanho do array corresponde ao procurado,
nesse caso o tamanho do array é 3
COMANDO UPDATE
Comando utilizado para fazer alterações em 1 ou mais documentos da nossa
coleção
A sintaxe para o comando update() é:
$ db.pessoas.update(critério, obj, upsert, multi)
critério // nossas condições para que aja a alteração
obj // o que será alterado
upsert // caso não exista, criaremos um novo documento
multi // alteramos mais de 1 registro que se enquadre no nosso critério
OPERADORES DE MODIFICAÇÕES
Iremos utilizar os operadores de modificações para alterar valores nos
documentos diretamente em nossa query do mongodb.
ex.
$ db.pessoas.update({criterios-busca}, {operador-modificacao}, upsert,
multi)
OPERADORES DE MODIFICAÇÕES
$set
$ db.pessoas.update({"nome": "eduardo"}, {$set: {saldo: 250.50}});
Seta um novo valor ao saldo de eduardo.
$unset
$ db.pessoas.update({"nome": "eduardo"}, {$unset: {saldo: 1}})
Deleta o campo saldo do documento de eduardo
$inc
$ db.pessoas.update({"nome": "eduardo"}, {$inc: {idade: 1}})
Incrementa o valor no campo que se não existir ele irá criar e atribuir o
valor, caso queira decrementar, basta passar o valor negativo.
$push
$ db.pessoas.update({"nome": "eduardo"}, {$push: {categoria: "estudante"}})
Adiciona ao campo categoria que é um array o valor estudante, caso o campo
categoria não exista ele irá criá-lo e se existir e não for um array ele
retornará uma mensagem de erro.
OPERADORES DE MODIFICAÇÕES
$pushAll
$ db.pessoas.update({"nome": "eduardo"}, {$pushAll: {categoria:
["estudante", "estagiario"]}})
Adiciona ao campo categoria todos os valores que estão dentro do array
(estudante e estagiario), caso o campo categoria não exista ele irá criá-lo
e se existir e não for um array ele retornará uma mensagem de erro.
$pull
$ db.pessoas.update({"nome": "eduardo"}, {$pull: {categoria: "estudante"}})
Remove o valor estudante do array categoria
$pullAll
$ db.pessoas.update({"nome": "eduardo"}, {$pullAll: {categoria:
["estudante", "estagiario"]}})
Remove todos os valores (estudante e categoria) do array categoria
COUNT
Da mesma forma que temos o operador count no mysql possuímos no mongodb.
Ex.
SELECT count(*) FROM pessoas
$ db.pessoas.count()
SELECT count(*) FROM pessoas WHERE idade < 18
$ db.pessoas.count({idade: {$lt: 18}})
ORDENAÇÃO
No mongodb podemos ordenar nossas consultas com o comando sort
Ex.
SELECT * FROM pessoas ORDER BY nome ASC
$ db.pessoas.find().sort({nome: 1})
SELECT * FROM pessoas ORDER BY idade DESC
$ db.pessoas.find().sort({idade: -1})
LIMIT
Colocaremos limites em nossas buscas
Ex.
SELECT * FROM pessoas ORDER BY nome ASC LIMIT 0,2
$ db.pessoas.find().sort({nome: 1}).limit(2)
SELECT * FROM pessoas LIMIT 2 OFFSET 10
$ db.pessoas.find().limit(2).skip(10)
//Buscando 2 documentos ignorando os 10 primeiros encontrados
REMOVE
Para apagarmos um documento ou limpar totalmente uma coleção usamos os
seguintes comando:
$ db.pessoas.remove({"nome": "eduardo"})
Apago todos os documentos que tenham o nome eduardo
$ db.pessoas.remove()
Apago todos os documentos
EXPLAIN
O comando explain é ótimo para auxiliá-lo na otimização de suas queries, da
mesma forma que no mysql ele trás muitas informações importantes.
$ db.pessoas.find().explain()
"cursor" : "BasicCursor", //tipo de índice usado
"isMultiKey" : false, // se índice múltiplo foi usado
"n" : 6, // numero de documento encontrados na busca
"nscannedObjects" : 6, // documentos escaneados
"nscanned" : 6, // numero de documentos e índices escaneados
"indexOnly" : false, // se a busca pode ser feita apenas pelo índice
"nYields" : 0, // numero de vezes que esperou um lock de leitura
"nChunkSkips" : 0, // numero de documento ignorados na migração de
chunks de sharding
"millis" : 0, // tempo de execução da query em milisegundos
"indexBounds" : {} // faixa de busca usada
ÍNDICES
Para melhorarmos nossa consulta é preciso que índices sejam criados em
nossas coleções, vale lembrar que nem sempre a criação de muitos índice
melhoram a performance da busca em muitos casos eles acabam atrapalhando.
Para criamos um índice utilizamos o comando ensureIndex()
$ db.pessoas.ensureIndex({nome: 1})
Para visualizarmos os índices da coleção utilizamos
$ db.pessoas.getIndexes()
Para visualizarmos todos os índices do banco de dados utilizamos uma coleção
do sistema
$ db.system.indexes.find()
E para deletar um índice utilize o comando
$ db.pessoas.dropIndex("nome_1")
RELACIONAMENTOS - DBREF
Por mais que o mongodb não seja um banco de dados relacional, existem
algumas formar que podemos utilizar para relacionarmos os documentos.
Acrescentando o ObjectId no documento e depois realizamos uma segunda busca
para retornar o documento relacionado ou podemos utilizar o DBRef que faz
essa ligação de forma automática.
$ db.turma.insert({curso: "angularjs", aluno: {$ref: "pessoas", $id:
"533b63f066b353505cb62bd2"}})
$ db.turma.find().pretty()
{
"_id" : ObjectId("533b8b5f66b353505cb62bd8"),
"curso" : "angularjs",
"aluno" : DBRef("pessoas", "533b63f066b353505cb62bd2")
}
db.turma.find({"aluno.$id": "533b63f066b353505cb62bd2"}) // Buscamos a turma
no qual o aluno está
REPLICA
Replicação no mongodb é uma obrigação, quedas dos servidores e paradas
bruscas do mongod podem corromper as coleções.
SHARDING
Você irá dividir em partes seus dados e distribui-los entre seus nós, cada
servidor de sharding configurado receberá dados levando em conta a shard
key.
GRIDFS
GridFS é o sistema de arquivos do mongodb e deve ser usado quando precisamos
armazenar aquivos maiores que 1mb.
Adicionando um arquivo
$ mongofiles -d nomedobanco put arquivo.mp3
Quando o arquivo é adicionado são criadas duas coleções uma fs.chunks que
contém o binário do arquivo e outra fs.files que são as informações do
arquivo como data de upload, nome e tamanho.
AGGREGATION FRAMEWORK
Após a versão 2.2 do mongodb os usuários podem realizar operações similares
ao group by do mysql utilizando a agregação, é possível filtrar documentos,
reduzir conjuntos, encontra valores mínimos e máximo ou agrupar documentos.
ex.
$ db.pessoas.aggregate({$group: {_id: "$idade", totalSaldo: {$sum:
"$saldo"}}},{$match: {totalSaldo: {$gte: 100.5}}})
No aggregate quando for referenciar um campo é preciso que ele venha
acompanhado com o $ como foi feito no campo idade e saldo.
REFERÊNCIAS
Documentação do MONGODB
http://docs.mongodb.org/
BE MEAN - Jean Carlo Nascimento
http://bemean.com.br/

Weitere ähnliche Inhalte

Was ist angesagt?

Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16Christiano Anderson
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 

Was ist angesagt? (20)

Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Meetup MUG-RS KingHost
Meetup MUG-RS KingHostMeetup MUG-RS KingHost
Meetup MUG-RS KingHost
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 

Andere mochten auch

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dadosJordan Kobellarz
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbfabio perrella
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLpichiliani
 
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosDesmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosFabíola Fernandes
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaGlaucio Scheibel
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBRodrigo Hjort
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?Nico Steppat
 

Andere mochten auch (13)

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dados
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodb
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de DadosDesmistificando NoSQL e Novas Tecnologias de Bancos de Dados
Desmistificando NoSQL e Novas Tecnologias de Bancos de Dados
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
NOSQL
NOSQLNOSQL
NOSQL
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?
 

Ähnlich wie MongoDB - Iniciando e Conhecendo

Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Junior Fernandes
 
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...ISCTE-IUL ACM Student Chapter
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoJulio Monteiro
 
Mongo DB de forma simples e rápida
Mongo DB de forma simples e rápida Mongo DB de forma simples e rápida
Mongo DB de forma simples e rápida Erivan Cledson
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webHenrique Gogó
 
MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!Diego Hellas
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQLArley Rodrigues
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - TabelasDalton Martins
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBRodrigo Hjort
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Unidade4.1 Oracle Or
Unidade4.1 Oracle OrUnidade4.1 Oracle Or
Unidade4.1 Oracle OrUFU
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesDerek Willian Stavis
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos formsMoacir Filho
 

Ähnlich wie MongoDB - Iniciando e Conhecendo (20)

Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)Introdução ao nosql (mini curso)
Introdução ao nosql (mini curso)
 
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
acm, chapter, development, events, iscte, portugal, opensource, softwareApres...
 
Minicurso mongo db
Minicurso mongo dbMinicurso mongo db
Minicurso mongo db
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documento
 
Mongo DB de forma simples e rápida
Mongo DB de forma simples e rápida Mongo DB de forma simples e rápida
Mongo DB de forma simples e rápida
 
Mongo db
Mongo dbMongo db
Mongo db
 
JDBC
JDBCJDBC
JDBC
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações web
 
MongoDB
MongoDBMongoDB
MongoDB
 
MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!MySQL + JSON da casamento sim!
MySQL + JSON da casamento sim!
 
NotORM
NotORMNotORM
NotORM
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
Vb
VbVb
Vb
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - Tabelas
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Unidade4.1 Oracle Or
Unidade4.1 Oracle OrUnidade4.1 Oracle Or
Unidade4.1 Oracle Or
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slides
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos forms
 

MongoDB - Iniciando e Conhecendo

  • 1. Iniciando e conhecendo Edemilson Luiz Gonçalves ede.goncalves88@gmail.com https://www.facebook.com/edegoncalves
  • 2. MONGODB • C++ • JSON/BSON • Replica • Sharding • GridFS • Aggregation Framework
  • 3. Terminologia: MYSQL e MONGODB MYSQL DATABASE TABLE ROWS QUERY INDEX PARTITION MONGODB DATABASE COLLECTION DOCUMENT JSON QUERY INDEX SHARD
  • 4. BANCO DE DADOS E COLEÇÃO Selecionando o banco de dados que iremos utilizar: use bancodedados Visualizando os nossos bancos de dados:show dbs Executando comandos:db.colecao.comando() ex: db.produtos.drop() // Apaga a coleção db.produtos.remove() // Limpa a coleção
  • 5. COMANDO INSERT Inserimos um documento novo no Banco de dados utilizando o comando insert $ db.pessoas.insert({"nome": "eduardo", "idade": 15, "saldo": 45.50}) Podemos utilizar valores que estão em variáveis $ var pessoa1 = {"nome": "eduardo", "idade": 15, "saldo": 45.50}; $ db.pessoas.insert(pessoa1);
  • 6. COMANDO SAVE Podemos recuperar um documento, fazer as modificações necessárias e salvá-lo novamente. $ var pessoa1 = db.pessoas.findOne(); $ pessoa1.idade = 16; $ db.pessoas.save(pessoa1);
  • 7. COMANDO CURSOR Todas as buscas feitas através do find() irá retornar um cursor, vamos repeti-lo para retirarmos os valores. $ var cursor = db.pessoas.find(); A linguagem utilizada no mongodb é o javascript então vamos usar o comando forEach() $ cursor.forEach(function(pessoa){ printjson(data.nome) }) O comando acima irá listar os nomes de todas as pessoas cadastradas em nossa coleção.
  • 8. COMANDO FIND Para realizar consultas no MongoDB utilizamos duas funções: find() // Retorna um array, mesmo sendo apenas 1 documento. findOne() // Retorna um único documento. A sintaxe para fazermos consultas é: $ db.pessoas.find({clausulas}, {campos}); $ db.pessoas.findOne({clausulas}, {campos}); ex: $ db.pessoas.findOne({"nome": "eduardo"}, {"idade": 1}) // Selecione apenas o campo idade. $ db.pessoas.findOne({"nome": "eduardo"}, {"idade": 0}) // Selecione o documento sem o campo idade.
  • 9. OPERADORES $lt $ db.pessoas.find({"idade": {$lt: 18}}) Retorna os documentos com valores menores que 18 $lte $ db.pessoas.find({"idade": {$lte: 18}}) Retorna os documentos com valores menores ou igual a 18 $gt $ db.pessoas.find({"idade": {$gt: 18}}) Retorna os documentos com valores maiores que 18 $gte $ db.pessoas.find({"idade": {$gte: 18}}) Retorna os documentos com valores maiores ou igual a 18
  • 10. OPERADORES $or $ db.pessoas.find({"idade": 15, $or: [{"nome": "pedro"}, {"nome": "eduardo"}]}) Buscamos um documentos em que a idade seja igual a 15 e o nome seja pedro ou eduardo $nor $ db.pessoas.find({$nor: [{"nome": "pedro"}, {"nome": "eduardo"}]}) Buscamos um documentos em que o nome NÃO seja pedro ou eduardo $and $ db.pessoas.find({$and: [{"nome": "zeca"}, {"idade": {$lt: 15}}]}) Buscamos um documento em que nome seja zeca E idade menor que 15
  • 11. OPERADORES Existem campos que contém um array e alguns operadores para utilizarmos neles $ne $ db.pessoas.find({cursos: {$ne: "mysql"}}) Buscamos dentro do campo cursos que é um array as pessoas que NÃO fizeram o curso de mysql $in $ db.pessoas.find({cursos: {$in: ["mysql", "mongodb"]}}) Buscamos as pessoas que fizeram o curso de mysql ou mongodb, lembrando que o $in espera sempre um array, mesmo que seja um único valor. $nin $ db.pessoas.find({cursos: {$nin: ["mysql", "mongodb"]}}) Retorna as pessoas que não fizeram curso de mysql ou mongodb. Documentos que nenhum valor do array foi encontrado.
  • 12. OPERADORES $exists $ db.pessoas.find({cursos: {$exists: 1}}) Busco os documentos que tenham o campo cursos $all $ db.pessoas.find({cursos: {$all: ["mysql", "mongodb"]}}) Ele funciona da mesma forma que o operador $in, a diferença é que precisa existir todos os campos do array ou invés de apenas 1. $size $ db.pessoas.find({cursos: {$size: 3}}) Retorna os documentos no qual o tamanho do array corresponde ao procurado, nesse caso o tamanho do array é 3
  • 13. COMANDO UPDATE Comando utilizado para fazer alterações em 1 ou mais documentos da nossa coleção A sintaxe para o comando update() é: $ db.pessoas.update(critério, obj, upsert, multi) critério // nossas condições para que aja a alteração obj // o que será alterado upsert // caso não exista, criaremos um novo documento multi // alteramos mais de 1 registro que se enquadre no nosso critério
  • 14. OPERADORES DE MODIFICAÇÕES Iremos utilizar os operadores de modificações para alterar valores nos documentos diretamente em nossa query do mongodb. ex. $ db.pessoas.update({criterios-busca}, {operador-modificacao}, upsert, multi)
  • 15. OPERADORES DE MODIFICAÇÕES $set $ db.pessoas.update({"nome": "eduardo"}, {$set: {saldo: 250.50}}); Seta um novo valor ao saldo de eduardo. $unset $ db.pessoas.update({"nome": "eduardo"}, {$unset: {saldo: 1}}) Deleta o campo saldo do documento de eduardo $inc $ db.pessoas.update({"nome": "eduardo"}, {$inc: {idade: 1}}) Incrementa o valor no campo que se não existir ele irá criar e atribuir o valor, caso queira decrementar, basta passar o valor negativo. $push $ db.pessoas.update({"nome": "eduardo"}, {$push: {categoria: "estudante"}}) Adiciona ao campo categoria que é um array o valor estudante, caso o campo categoria não exista ele irá criá-lo e se existir e não for um array ele retornará uma mensagem de erro.
  • 16. OPERADORES DE MODIFICAÇÕES $pushAll $ db.pessoas.update({"nome": "eduardo"}, {$pushAll: {categoria: ["estudante", "estagiario"]}}) Adiciona ao campo categoria todos os valores que estão dentro do array (estudante e estagiario), caso o campo categoria não exista ele irá criá-lo e se existir e não for um array ele retornará uma mensagem de erro. $pull $ db.pessoas.update({"nome": "eduardo"}, {$pull: {categoria: "estudante"}}) Remove o valor estudante do array categoria $pullAll $ db.pessoas.update({"nome": "eduardo"}, {$pullAll: {categoria: ["estudante", "estagiario"]}}) Remove todos os valores (estudante e categoria) do array categoria
  • 17. COUNT Da mesma forma que temos o operador count no mysql possuímos no mongodb. Ex. SELECT count(*) FROM pessoas $ db.pessoas.count() SELECT count(*) FROM pessoas WHERE idade < 18 $ db.pessoas.count({idade: {$lt: 18}})
  • 18. ORDENAÇÃO No mongodb podemos ordenar nossas consultas com o comando sort Ex. SELECT * FROM pessoas ORDER BY nome ASC $ db.pessoas.find().sort({nome: 1}) SELECT * FROM pessoas ORDER BY idade DESC $ db.pessoas.find().sort({idade: -1})
  • 19. LIMIT Colocaremos limites em nossas buscas Ex. SELECT * FROM pessoas ORDER BY nome ASC LIMIT 0,2 $ db.pessoas.find().sort({nome: 1}).limit(2) SELECT * FROM pessoas LIMIT 2 OFFSET 10 $ db.pessoas.find().limit(2).skip(10) //Buscando 2 documentos ignorando os 10 primeiros encontrados
  • 20. REMOVE Para apagarmos um documento ou limpar totalmente uma coleção usamos os seguintes comando: $ db.pessoas.remove({"nome": "eduardo"}) Apago todos os documentos que tenham o nome eduardo $ db.pessoas.remove() Apago todos os documentos
  • 21. EXPLAIN O comando explain é ótimo para auxiliá-lo na otimização de suas queries, da mesma forma que no mysql ele trás muitas informações importantes. $ db.pessoas.find().explain() "cursor" : "BasicCursor", //tipo de índice usado "isMultiKey" : false, // se índice múltiplo foi usado "n" : 6, // numero de documento encontrados na busca "nscannedObjects" : 6, // documentos escaneados "nscanned" : 6, // numero de documentos e índices escaneados "indexOnly" : false, // se a busca pode ser feita apenas pelo índice "nYields" : 0, // numero de vezes que esperou um lock de leitura "nChunkSkips" : 0, // numero de documento ignorados na migração de chunks de sharding "millis" : 0, // tempo de execução da query em milisegundos "indexBounds" : {} // faixa de busca usada
  • 22. ÍNDICES Para melhorarmos nossa consulta é preciso que índices sejam criados em nossas coleções, vale lembrar que nem sempre a criação de muitos índice melhoram a performance da busca em muitos casos eles acabam atrapalhando. Para criamos um índice utilizamos o comando ensureIndex() $ db.pessoas.ensureIndex({nome: 1}) Para visualizarmos os índices da coleção utilizamos $ db.pessoas.getIndexes() Para visualizarmos todos os índices do banco de dados utilizamos uma coleção do sistema $ db.system.indexes.find() E para deletar um índice utilize o comando $ db.pessoas.dropIndex("nome_1")
  • 23. RELACIONAMENTOS - DBREF Por mais que o mongodb não seja um banco de dados relacional, existem algumas formar que podemos utilizar para relacionarmos os documentos. Acrescentando o ObjectId no documento e depois realizamos uma segunda busca para retornar o documento relacionado ou podemos utilizar o DBRef que faz essa ligação de forma automática. $ db.turma.insert({curso: "angularjs", aluno: {$ref: "pessoas", $id: "533b63f066b353505cb62bd2"}}) $ db.turma.find().pretty() { "_id" : ObjectId("533b8b5f66b353505cb62bd8"), "curso" : "angularjs", "aluno" : DBRef("pessoas", "533b63f066b353505cb62bd2") } db.turma.find({"aluno.$id": "533b63f066b353505cb62bd2"}) // Buscamos a turma no qual o aluno está
  • 24. REPLICA Replicação no mongodb é uma obrigação, quedas dos servidores e paradas bruscas do mongod podem corromper as coleções.
  • 25. SHARDING Você irá dividir em partes seus dados e distribui-los entre seus nós, cada servidor de sharding configurado receberá dados levando em conta a shard key.
  • 26. GRIDFS GridFS é o sistema de arquivos do mongodb e deve ser usado quando precisamos armazenar aquivos maiores que 1mb. Adicionando um arquivo $ mongofiles -d nomedobanco put arquivo.mp3 Quando o arquivo é adicionado são criadas duas coleções uma fs.chunks que contém o binário do arquivo e outra fs.files que são as informações do arquivo como data de upload, nome e tamanho.
  • 27. AGGREGATION FRAMEWORK Após a versão 2.2 do mongodb os usuários podem realizar operações similares ao group by do mysql utilizando a agregação, é possível filtrar documentos, reduzir conjuntos, encontra valores mínimos e máximo ou agrupar documentos. ex. $ db.pessoas.aggregate({$group: {_id: "$idade", totalSaldo: {$sum: "$saldo"}}},{$match: {totalSaldo: {$gte: 100.5}}}) No aggregate quando for referenciar um campo é preciso que ele venha acompanhado com o $ como foi feito no campo idade e saldo.
  • 28. REFERÊNCIAS Documentação do MONGODB http://docs.mongodb.org/ BE MEAN - Jean Carlo Nascimento http://bemean.com.br/