Minicurso mongo db

Preview:

Citation preview

Você ainda não conhece?

{ nome: ‘Pablo Juan’,Titulo: ‘Microsoft Student Partner’,

Blog:‘pablojuancruz.wordpress.com’Códigos: ‘github.com/pablojuancruz’

email: ‘pablojuan@foryoursystem.com’ }

Agenda

• Sobre• NOSql• História MongoDB• Compreensão• Crud• Perguntas

4

Apresentação – Pablo Juan

• 1º Torneio de Robótica Lego Brasil• Técnico em Informática com ênfase em programação(ETEC de Itaquera).• Graduação em Analise e desenvolvimento de sistemas(FIAP)• Mais de 6 anos de experiência• CEO & Founder For Your System • Consultor .Net Sênior WorkInside• Microsoft Student Partner

“Que o teu orgulho e objetivo consistam em pôr no teu trabalho algo que se assemelhe a um milagre”Leonardo da Vinci.

5

6

Contatos

• Perfil no Facebookhttps://www.facebook.com/PabloJuan.cruz

• Blog Pessoalhttps://pablojuancruz.wordpress.com.br

• LinkedInhttp://br.linkedin.com/in/PabloJuanCruz

7

“O mundo de TI é mais voltado para moda do que a própria moda”

NORel???

NOSql

• Em 1998 com Carlo Strozzi• 2009, Erick Evans, Johan Oskarsson • Open source distribuídos• Performance• SubDivisão(Orientação)

Wide Column Store / Column Families(Hadoop, Cassandra) Document Store(MongoDb, CouchDB) Key Value / Tuple Store(Riak, Redis) Graph Databases(Neo4j,Cayley, ArangoDB) Multimodel Databases(OrientDb) Object Databases(Versant,db4o) Grid & Cloud Database Solutions(Oracle Coherence) XML Databases(EMC Documentum xDB) Multidimensional Databases(Globals) Multivalue Databases(OpenInsight)

Mas o que é NOSQL?

História MongoDB

Etimologia 

HUMONGOuS

MONGODB

Historia

– DoubleClick

– 10Gen

– MongoDB INC• WiredTiger

Compreensão

MongoDB

• C++ • Schemaless • JSON/BSON (Orientado a documentos)• Replicação• Sharding • GridFS• Busca/Geolocalização

TerminologiaSQL MongoDB

database database

table collection

row document or BSON document

column field

index index

table joins embedded documents and linking

primary keySpecify any unique column or column combination as primary key.

primary keyIn MongoDB, the primary key is automatically set to the _idfield.

aggregation (e.g. group by) aggregation pipelineSee the SQL to Aggregation Mapping Chart.

Configuração Windows

Instalando como serviço • https://pablojuancruz.wordpress.com/2014/09/03/configurando-ambiente-mongodb-no-windows/

CRUD

Primeiros Comandos• Listando dataBase

– Show dbs;• Criando dataBase/usando dataBase já criado

– Use NomeD ataBase()• Criando e inserindo dado em uma coleção

– db.nomeColecao.insert({dado1:’’,dado2:true}• Listando o conteúdo de uma coleção

– db.nomeColecao.find()

Validando Schemas

db.createCollection( “NomeCollection", { validator: { $and: [ { campo1: { $type: "string" } }, { campo2: { $in: [ “Arroz", “Feijão", “Macarrão", “Banana" ] } }, { campo3{ $in: [ “Tranquilo", “Favorável", “BaileDeFavela" ] } }, { campo4: { $gte: 1992} } ] }} )

Primeiros Comandos• Apagando itens de uma coleção

– db.nomeColecao.remove({query})

• Apagando uma coleção– db.nomeColecao.drop()

• Update (forma básica)var query = db.nomeColecao.findOne()query.dado1 = 23db.nomeColecao.save(query)

Consultas MongoDb

• Listando– db.nomeColecao.findOne()

• Find com Regex– db.nomeColecao.find( { nome : /a/ } );– db.teste.find({nome:{$regex: /a/}})

Operadores

• $eq -- Equal(Igual)– valores que são iguais a um outro valor especificado.

• $gt – Great Than(Maior)– Valores que são maiores do que um outro valor especificado.

• $gte – Great Than or Equal(Maior ou Igual)– Valores que são maiores ou iguais a um outro valor especificado.

• $lt - less than – Valores que são menores do que um outro valor especificado.

• $lte less than or equal – Valores que são menores ou iguais a um outro valor especificado.

• $ne Not Equal– Combina todos os valores que não são iguais a um valor especificado

{"campo" : { $operador: valor} }

db.teste.find({idade:{$gt:18}}).pretty()

Operadaroes array• $in

– Corresponde a qualquer um dos valores especificados em uma matriz.

• $nin - (Not In)– Nenhum dos valores especificados em uma matriz.

db.teste.find({tags : {$in: ['teste','ok']}}).pretty()

Resultado:{ "_id" : ObjectId("5605893fa3a64169cc4622d2"), "nome" : "TJ", "idade" : 24, "tags" : [ "teste", "ok" ]}

Operadores

• $or

• $nor

• $and

db.teste.find({$and:[{nome:"a"}, {idade: {$gte:10}}]}).pretty()

Update• Query

– os critérios de seleção para a atualização. Os mesmos seletores de consulta como no método find () estão disponíveis. O “where” do SQL.

• Update– Campo: valor que desejamos alterar.

• UpSert– Opcional. Se definido como verdadeiro, cria um novo documento quando nenhum coincide com os critérios de

consulta. O valor padrão é falso, o que significa que não irá inserir um novo documento quando não for encontrada nenhuma correspondência.

• Multi– Opcional. Se definido como verdadeiro, atualiza vários documentos que atendem aos critérios de consulta. Se

definido como false, atualiza um documento. O valor padrão é falso. Para obter informações adicionais, consulte multiparâmetro.

• WriteResult– Número de documentos que combinam com a consulta.

db.coleção.update( {editor:{$in:[/a/]}} , {preco:19}, { upsert: true, multi: false })

Você ainda não conhece?

{ nome: ‘Pablo Juan’,Titulo: ‘Microsoft Student Partner’,

Blog:‘pablojuancruz.wordpress.com’Códigos: ‘github.com/pablojuancruz’

email: ‘pablojuan@foryoursystem.com’ }