SlideShare a Scribd company logo
1 of 50
WORKSHOP ::: 1º PHP-DAY MongoDB: alternativa intuitiva e não-relacional ao Mysql Diego Sana
Sobre mim ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sumário ,[object Object],[object Object],[object Object],[object Object],[object Object]
Motivação ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Porém…
[object Object],[object Object],[object Object],[object Object],RDBMS e a web …
[object Object],[object Object],[object Object],[object Object],Podemos fazer melhor: NoSQL
[object Object],[object Object],[object Object],[object Object],Exemplos: BigTable
[object Object],[object Object],[object Object],[object Object],Exemplos: Dynamo
[object Object],[object Object],[object Object],[object Object],Exemplos: Memcache
[object Object],[object Object],[object Object],[object Object],Exemplos: CouchDB
[object Object],[object Object],[object Object],[object Object],O que todos eles tem em comum
[object Object],[object Object],[object Object],Mongo DB: o melhor dos dois mundos
[object Object],[object Object],Quem faz
[object Object],[object Object],[object Object],Filosofia
[object Object],[object Object],[object Object],[object Object],Funcionalidades
[object Object],[object Object],[object Object],[object Object],Funcionalidades
[object Object],[object Object],[object Object],[object Object],[object Object],Pros
[object Object],[object Object],[object Object],[object Object],Contras
[object Object],[object Object],[object Object],[object Object],Adequado para
[object Object],[object Object],[object Object],Inadequado para
[object Object],[object Object],[object Object],[object Object],[object Object],Ei, mais eu só quero fazer o site da padaria do meu tio!!!
[object Object],[object Object],[object Object],[object Object],Modelo de dados
[object Object],[object Object],[object Object],[object Object],Databases
[object Object],[object Object],[object Object],Coleções
[object Object],[object Object],[object Object],Documentos
[object Object],[object Object],[object Object],BSON
[object Object],[object Object],[object Object],Baixando o MongoDB
[object Object],[object Object],[object Object],[object Object],[object Object],Instalação do Servidor MongoDB
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Instalação do Driver PHP
[object Object],[object Object],[object Object],Incluso com MongoDB
[object Object],[object Object],[object Object],Usando MongoDB com PHP $conn_mongodb = new Mongo(); // Assume mongod rodando em localhost:27017 (default)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Alguns métodos básicos
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Implementando um MongoLog  
[object Object],[object Object],[object Object],Modelagem
Criando e inserindo na coleção "users" ,[object Object],[object Object],[object Object],[object Object],$doc = array("_id" => 1,   "email" => "meu@email.com",   "nome" => "Joaozinho",   "nivel" => "admin_supremo"); $conn_mongodb->selectDB("blogs")->selectCollection("users")->save($doc);
Fazendo uma consulta ,[object Object],[object Object],[object Object],$query = array("nome" => "Joaozinho"); $cursor = $conn_mongodb->selectDB("blogs")->selectCollection("users") ->find($query) $query = array("nome" => "Joaozinho"); $fields = array("email" => true); $cursor = $conn_mongodb->selectDB("blogs")->selectCollection("users") ->find($query,$fields);
find() vs findOne() ,[object Object],[object Object],[object Object],$query = array(“_id” => “1”); $col =  $conn_mongodb->selectDB("blogs")->selectCollection("users"); $cursor = $col->find($query); while($cursor->hasNext()) { $doc = $cursor->getNext(); } $query = array(“_id” => “1”); $col =  $conn_mongodb->selectDB("blogs")->selectCollection("users"); $doc = $col->findOne($query);
Inserindo um post ,[object Object],[object Object],[object Object],$doc = array(“titulo” => “Titulo do meu post”,   “texto” => “Aqui vai meu textículo”,   “data” => new MongoDate(),   “ idAutor” => 1)); $col->insert($doc); // método português: adiciona tags ao array $doc e o salva no db: $doc[“tags”] = array(“teste”,”mongodb”); $col->save($doc) // método l337: usando o “modificador” $set $query = array(“_id” => $doc[‘_id’]); $updatefields = array(‘$set’ => array(“tags” =>  array(“teste”,”mongodb”) )); $col->update($query,$updatefields,true);
Inserindo comentários num post ,[object Object],[object Object],[object Object],$comentario = array(“nome” => “Comentador”,   “email” => “me@obriga.com”   “ comentario” => “Que legal”); $query = array(“_id” => $doc[“_id”]); $updatefields = array(‘$push’ => array(“comentarios” => $comentario)); $col->update($query,$updatefields,true);
Contador de Visitas ,[object Object],[object Object],[object Object],$query = array(“_id” => $doc[“_id”]); $updatefields = array(‘$inc’ => array(“visitas” => 1));  $col->update($query,$updatefields,true); $updatefields = array(“$inc” => array(“visitas” => 2));
Lista de amigos ,[object Object],[object Object],[object Object],$col = $db->selectCollection(“friends”); $idUser = 1; $idFriend = 2; $query = array(“_id” => $idUser); $updatefields = array(‘$push’ => array(“ids” => $idFriend));  $col->update($query,$updatefields,true); $query = array(“_id” => 1); $updatefields = array(“$pull” => array(“ids” => 2));  $col->update($query,$updatefields);
Contador, paginação e ordenação ,[object Object],[object Object],[object Object],$col = $db->selectCollection(“posts”); $cursor = $col->find(); $cursor_ascendente = $cursor->sort(array(“data” => 1)); $cursor_descendente = $cursor->sort(array(“data” => -1)); $col = $db->selectCollection(“posts”); $contador = $col->count(); $cursor = $col->find(); $cursor->sort(array(“data” => -1)); $cursor->skip(2); $cursor->limit(1);
Querys usando operadores ,[object Object],[object Object],[object Object],$col = $db->selectCollection(“posts”); $query = array(“visitas” => array(‘$gt’ => 2)) $cursor = $col->find($query); $col = $db->selectCollection(“posts”); $query = array(“comentarios” => array(‘$exists’ => false)) $cursor = $col->find($query); $col = $db->selectCollection(“posts”); $query = array(“tags” => array(‘$in’ => “mongo”)) $cursor = $col->find($query);
Querys usando operadores ,[object Object],[object Object],[object Object],$col = $db->selectCollection(“posts”); $query = array(“visitas” => array(‘$gt’ => 1, ‘$lt’ => 3)) $cursor = $col->find($query); $col = $db->selectCollection(“posts”); $query = array(“comentarios” => array(‘$size’ => 2)) $cursor = $col->find($query); $col = $db->selectCollection(“posts”); $query = array(“tags” => array(‘$in’ => array(“mongo”, “teste”, “php”)) $cursor = $col->find($query);
Índices ,[object Object],[object Object],[object Object],$col = $db->selectCollection(“posts”); $col->ensureIndex(“tags”); $col = $db->selectCollection(“posts”); $col->ensureIndex(array(“data” => 1)); // índice com ordem crescente  $col->ensureIndex(array(“data” => -1)); // índice com ordem decrescente $query = array(“tags” => “mongodb”); $cursor = $col->find($query); var_dump($cursor->explain());
Outras querys: remoção ,[object Object],[object Object],[object Object],[object Object],$col->remove(); $col = $db->selectCollection(“users”); $query = array(“nome” => “Joaozinho”); $col->remove($query); $db->dropCollection(“users”); $db->drop();
Outras querys: Erros ,[object Object],$doc = array(“_id” => 1); $col = $db->selectCollection(“error”); $col->insert($doc); if($error = $conn_mongodb->lastError()) { echo "Error: "; var_dump($error); }
Indo além ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Perguntas?

More Related Content

What's hot

Ajax O Objeto Xml Http Request Parte 4
Ajax   O Objeto Xml Http Request   Parte 4Ajax   O Objeto Xml Http Request   Parte 4
Ajax O Objeto Xml Http Request Parte 4
infinitopublicidade
 

What's hot (19)

Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Workshop de ELK - EmergiNet
Workshop de ELK - EmergiNetWorkshop de ELK - EmergiNet
Workshop de ELK - EmergiNet
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Ajax O Objeto Xml Http Request Parte 4
Ajax   O Objeto Xml Http Request   Parte 4Ajax   O Objeto Xml Http Request   Parte 4
Ajax O Objeto Xml Http Request Parte 4
 
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
 
How to use Elasticsearch Analyzers by EmergiNet
How to use  Elasticsearch Analyzers by EmergiNetHow to use  Elasticsearch Analyzers by EmergiNet
How to use Elasticsearch Analyzers by EmergiNet
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2Treinamento Elasticsearch - Parte 2
Treinamento Elasticsearch - Parte 2
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 

Similar to Mongo Db - PHP Day Workshop

Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
Frederico Maia Arantes
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
Marco Pinheiro
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 

Similar to Mongo Db - PHP Day Workshop (20)

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
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Crud
CrudCrud
Crud
 
Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Cake Php
Cake PhpCake Php
Cake Php
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
Palestra
PalestraPalestra
Palestra
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 

Recently uploaded

Recently uploaded (9)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Mongo Db - PHP Day Workshop

  • 1. WORKSHOP ::: 1º PHP-DAY MongoDB: alternativa intuitiva e não-relacional ao Mysql Diego Sana
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.