Enviar pesquisa
Carregar
Getting started with MongoDB and PHP
•
Transferir como ODP, PDF
•
8 gostaram
•
6,367 visualizações
G
gates10gen
Seguir
Slides from MongoSF 2011.
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 35
Baixar agora
Recomendados
What's New in ZF 1.10
What's New in ZF 1.10
Ralph Schindler
Web Scraping with PHP
Web Scraping with PHP
Matthew Turland
Web Scraping with PHP
Web Scraping with PHP
Matthew Turland
When RSS Fails: Web Scraping with HTTP
When RSS Fails: Web Scraping with HTTP
Matthew Turland
Exploiting Php With Php
Exploiting Php With Php
Jeremy Coates
Introducation to php for beginners
Introducation to php for beginners
musrath mohammad
Php with my sql
Php with my sql
husnara mohammad
Introduction to Google API - Focusky
Introduction to Google API - Focusky
Focusky Presentation
Recomendados
What's New in ZF 1.10
What's New in ZF 1.10
Ralph Schindler
Web Scraping with PHP
Web Scraping with PHP
Matthew Turland
Web Scraping with PHP
Web Scraping with PHP
Matthew Turland
When RSS Fails: Web Scraping with HTTP
When RSS Fails: Web Scraping with HTTP
Matthew Turland
Exploiting Php With Php
Exploiting Php With Php
Jeremy Coates
Introducation to php for beginners
Introducation to php for beginners
musrath mohammad
Php with my sql
Php with my sql
husnara mohammad
Introduction to Google API - Focusky
Introduction to Google API - Focusky
Focusky Presentation
Introduction to Modern Perl
Introduction to Modern Perl
Dave Cross
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Michael Wales
Ant
Ant
sundar22in
RESTFul IDEAS
RESTFul IDEAS
Joel Amoussou
Os Nixon
Os Nixon
oscon2007
The Joy of Smartmatch
The Joy of Smartmatch
Andrew Shitov
Perl6 in-production
Perl6 in-production
Andrew Shitov
Perl6 grammars
Perl6 grammars
Andrew Shitov
Into to DBI with DBD::Oracle
Into to DBI with DBD::Oracle
byterock
Php
Php
mohamed ashraf
Php Basic
Php Basic
Md. Sirajus Salayhin
Ods Markup And Tagsets: A Tutorial
Ods Markup And Tagsets: A Tutorial
simienc
PHP code examples
PHP code examples
programmingslides
Nine Ways to Use Network-Side Scripting
Nine Ways to Use Network-Side Scripting
Lori MacVittie
PHP and MySQL with snapshots
PHP and MySQL with snapshots
richambra
Crafting [Better] API Clients
Crafting [Better] API Clients
Wellfire Interactive
Test::Base
Test::Base
Tatsuhiko Miyagawa
Addmi 10.5-basic query-language
Addmi 10.5-basic query-language
odanyboy
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Codemotion
Open Source Package PHP & MySQL
Open Source Package PHP & MySQL
kalaisai
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
John Mertic
Modern Web Development with Perl
Modern Web Development with Perl
Dave Cross
Mais conteúdo relacionado
Mais procurados
Introduction to Modern Perl
Introduction to Modern Perl
Dave Cross
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Michael Wales
Ant
Ant
sundar22in
RESTFul IDEAS
RESTFul IDEAS
Joel Amoussou
Os Nixon
Os Nixon
oscon2007
The Joy of Smartmatch
The Joy of Smartmatch
Andrew Shitov
Perl6 in-production
Perl6 in-production
Andrew Shitov
Perl6 grammars
Perl6 grammars
Andrew Shitov
Into to DBI with DBD::Oracle
Into to DBI with DBD::Oracle
byterock
Php
Php
mohamed ashraf
Php Basic
Php Basic
Md. Sirajus Salayhin
Ods Markup And Tagsets: A Tutorial
Ods Markup And Tagsets: A Tutorial
simienc
PHP code examples
PHP code examples
programmingslides
Nine Ways to Use Network-Side Scripting
Nine Ways to Use Network-Side Scripting
Lori MacVittie
PHP and MySQL with snapshots
PHP and MySQL with snapshots
richambra
Crafting [Better] API Clients
Crafting [Better] API Clients
Wellfire Interactive
Test::Base
Test::Base
Tatsuhiko Miyagawa
Addmi 10.5-basic query-language
Addmi 10.5-basic query-language
odanyboy
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Codemotion
Open Source Package PHP & MySQL
Open Source Package PHP & MySQL
kalaisai
Mais procurados
(20)
Introduction to Modern Perl
Introduction to Modern Perl
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Ant
Ant
RESTFul IDEAS
RESTFul IDEAS
Os Nixon
Os Nixon
The Joy of Smartmatch
The Joy of Smartmatch
Perl6 in-production
Perl6 in-production
Perl6 grammars
Perl6 grammars
Into to DBI with DBD::Oracle
Into to DBI with DBD::Oracle
Php
Php
Php Basic
Php Basic
Ods Markup And Tagsets: A Tutorial
Ods Markup And Tagsets: A Tutorial
PHP code examples
PHP code examples
Nine Ways to Use Network-Side Scripting
Nine Ways to Use Network-Side Scripting
PHP and MySQL with snapshots
PHP and MySQL with snapshots
Crafting [Better] API Clients
Crafting [Better] API Clients
Test::Base
Test::Base
Addmi 10.5-basic query-language
Addmi 10.5-basic query-language
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Open Source Package PHP & MySQL
Open Source Package PHP & MySQL
Semelhante a Getting started with MongoDB and PHP
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
John Mertic
Modern Web Development with Perl
Modern Web Development with Perl
Dave Cross
PhpstudyTokyo MongoDB PHP CakePHP
PhpstudyTokyo MongoDB PHP CakePHP
ichikaway
Web Scraping with PHP
Web Scraping with PHP
Matthew Turland
Introduction To Moco
Introduction To Moco
Naoya Ito
jQuery - Doing it right
jQuery - Doing it right
girish82
Mojolicious on Steroids
Mojolicious on Steroids
Tudor Constantin
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rick Copeland
P H P Part I I, By Kian
P H P Part I I, By Kian
phelios
Introduction To Lamp
Introduction To Lamp
Amzad Hossain
Graph Databases
Graph Databases
Josh Adell
Dealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter Scott
O'Reilly Media
Going crazy with Node.JS and CakePHP
Going crazy with Node.JS and CakePHP
Mariano Iglesias
Think Generic - Add API's To Your Custom Modules
Think Generic - Add API's To Your Custom Modules
Jens Sørensen
Render API - Pavel Makhrinsky
Render API - Pavel Makhrinsky
DrupalCampDN
Framework
Framework
Nguyen Linh
PHP Presentation
PHP Presentation
Ankush Jain
Key Value Storage Systems ... and Beyond ... with Python
Key Value Storage Systems ... and Beyond ... with Python
Ian Lewis
HTML::FormHandler
HTML::FormHandler
bbeeley
Modern Perl
Modern Perl
Dave Cross
Semelhante a Getting started with MongoDB and PHP
(20)
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
Modern Web Development with Perl
Modern Web Development with Perl
PhpstudyTokyo MongoDB PHP CakePHP
PhpstudyTokyo MongoDB PHP CakePHP
Web Scraping with PHP
Web Scraping with PHP
Introduction To Moco
Introduction To Moco
jQuery - Doing it right
jQuery - Doing it right
Mojolicious on Steroids
Mojolicious on Steroids
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
P H P Part I I, By Kian
P H P Part I I, By Kian
Introduction To Lamp
Introduction To Lamp
Graph Databases
Graph Databases
Dealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter Scott
Going crazy with Node.JS and CakePHP
Going crazy with Node.JS and CakePHP
Think Generic - Add API's To Your Custom Modules
Think Generic - Add API's To Your Custom Modules
Render API - Pavel Makhrinsky
Render API - Pavel Makhrinsky
Framework
Framework
PHP Presentation
PHP Presentation
Key Value Storage Systems ... and Beyond ... with Python
Key Value Storage Systems ... and Beyond ... with Python
HTML::FormHandler
HTML::FormHandler
Modern Perl
Modern Perl
Último
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
FIDO Alliance
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
IES VE
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
CzechDreamin
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
CzechDreamin
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
UXDXConf
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
CzechDreamin
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
UXDXConf
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Mark Opanasiuk
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
Zilliz
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
FIDO Alliance
ECS 2024 Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
Femke de Vroome
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
DianaGray10
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
FIDO Alliance
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
Patrick Viafore
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
CzechDreamin
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
Stefano
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
FIDO Alliance
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
CzechDreamin
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
ChristopherTHyatt
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Mark Billinghurst
Último
(20)
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
ECS 2024 Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Getting started with MongoDB and PHP
1.
2.
Setting up MongoDB
+ PHP
3.
Actual PHP code!
(https://github.com/gatesvp/php_get_started) © Copyright 2011 10gen Inc.
4.
MongoDB & PHP
– Who Am I? { name: 'Gaëtan (Gates) Voyer-Perrault', job_title: 'Customer Success Engineer', email: 'gates@10gen.com', twitter: '@gatesvp', specialties: [ 'php', 'content monetization', 'mongodb', 'powershell', ':)' ] } © Copyright 2011 10gen Inc.
5.
6.
Native arrays, nested
documents
7.
Indexing for faster
queries
8.
Map / Reduce
for aggregation © Copyright 2011 10gen Inc.
9.
What is MongoDB?
Document-oriented Databases contains Collections Collections contain Documents © Copyright 2011 10gen Inc.
10.
11.
Different Sizes
12.
Indexable © Copyright
2011 10gen Inc.
13.
What is MongoDB?
Scalable Read scaling and HA via Replication © Copyright 2011 10gen Inc.
14.
What is MongoDB?
Scalable Write scaling via Sharding © Copyright 2011 10gen Inc.
15.
16.
Installing MongoDB &
PHP Installing PHP Driver: $ sudo apt-get install php5-dev php5-cli php-pear $ sudo pecl install mongo Open php.ini file and add: extension=mongo.so © Copyright 2011 10gen Inc.
17.
Let's start saving
documents Basic Connection: <?php try { $mongo = new Mongo('localhost:27017'); // default $db = $mongo->example; $collection = $db->test; $document = array('x' => 1); $collection->insert($document); print_r($document); } catch(Exception $e) { print($e->getMessage()); } ?> © Copyright 2011 10gen Inc.
18.
19.
The test
collection is created
20.
An index is
created the _id field
21.
An _id
is created for the document
22.
The _id
is added to the document © Copyright 2011 10gen Inc.
23.
24.
25.
Some Basic Queries
Queries accept a document / hashtable: // Basic query $query = array( '_id' => 'gates'); $result = $collection->findOne($query); // Query on array $query = array( 'friends' => 'alvin'); $result = $collection->findOne($query); // Query on sub-document $query = array( 'contact.twitter' => '@gatesvp'); $result = $collection->findOne($query); © Copyright 2011 10gen Inc.
26.
Some Basic Queries
– less fields Queries can specify only certain fields // Filter fields $query = array( '_id' => 'gates'); $fields = array( '_id' => 0, 'name' => 1, 'friends' => 1); $result = $collection->findOne($query, $fields); © Copyright 2011 10gen Inc.
27.
Some Advanced Queries
Mongo has several $operators: // Greater than ($gt) $query = array( 'followers' => array( '$gt' => 10 ) ); $results = $collection->find($query); // IN ($in) $query = array( '_id' => array( '$in' => array('gates','jim') ) ); $results = $collection->find($query); // also support for $or, $exists, $mod, $type, $size // regexes and negated versions of these. © Copyright 2011 10gen Inc.
28.
Cursoring through results
Result of a find() is cursor. Cursor works with foreach. $collection->insert(array('x' => 1)); $collection->insert(array('x' => 2)); $collection->insert(array('x' => 3)); $results = $collection->find(); foreach($results as $r) { print_r($r); } © Copyright 2011 10gen Inc.
29.
Cursoring through results
Alternately works with while loop: $collection->insert(array('x' => 1)); $collection->insert(array('x' => 2)); $collection->insert(array('x' => 3)); $results = $collection->find(); while($results->getNext()){ $r = $results->hasNext(); print_r($r); } © Copyright 2011 10gen Inc.
30.
Cursoring through results
Cursor also does counting, skipping, limiting: // Greater than ($gt) $collection->insert(array('x' => 1)); $collection->insert(array('x' => 2)); $collection->insert(array('x' => 3)); print($collection->find()->count()); // 3 $res = $collection->find()->limit(1); // x=>1 $res2 = $collection->find()->skip(1)->limit(1); // x=>2 © Copyright 2011 10gen Inc.
31.
Updating Documents Query
+ Update command // Does not behave as you would expect $query = array( '_id' => 'gates' ); $update = array( 'followers' => 19 ); $collection->update($query, $update); // Instead $query = array( '_id' => 'gates' ); $update = array( ' $set ' => array('followers' => 19) ); $collection->update($query, $update); © Copyright 2011 10gen Inc.
32.
Updating Documents Other
operators // Instead $query = array( '_id' => 'gates' ); $update = array( ' $set ' => array('name' => 'GVP', 'contact.website' => ' http://10gen.com/ '), ' $inc ' => array('followers' => 1), ' $push ' => array('friends' => 'antoine'), ' $unset ' => array('contact.twitter' => 1) ); $collection->update($query, $update); © Copyright 2011 10gen Inc.
33.
34.
Operators are atomic
within a document.
35.
Only one operation
per field. You cannot $pop & $pull an array in one command. © Copyright 2011 10gen Inc.
36.
Updating multiples Be
default, only first doc is updated. We can change this. $collection->insert(array('x'=>1)); $collection->insert(array('x'=>1)); $collection->insert(array('x'=>3)); $query = array('x' => 1); $update = array(' $inc ' => array('x' => 1))); $options = array(' multiple ' => true); $collection->update($query, $update, $options ); © Copyright 2011 10gen Inc.
37.
Deleting Very similar
to updating. $collection->remove(); // deletes everything! $query = array('x' => 1); $collection->remove($query); // deletes where x=>1 Beware empty query! © Copyright 2011 10gen Inc.
38.
Update if not
exist We call this the ' upsert ' // Upsert $query = array('_id' => 'gates'); $update = array('$inc' => array('followers' => 1)); $options = array(' upsert ' => true); $collection->update($query, $update, $options ); © Copyright 2011 10gen Inc.
39.
40.
… no
transactions across collections If you need these take a look at findAndModify + two-phase commit © Copyright 2011 10gen Inc.
41.
A word about
exceptions Catch them. Especially when using Replica Sets. Failover is not instant. © Copyright 2011 10gen Inc.
42.
More words about
exceptions Timeouts you'll want to check or set. Connection timeouts: try{ $connString = 'server1:27017'; $connOptions = array('timeout' => 3000); // 3 seconds $mongo = new Mongo($connString, $connOptions); } catch(MongoConnectionException $ex){ // log } © Copyright 2011 10gen Inc.
43.
More words about
exceptions Timeouts you'll want to check or set. Cursor timeouts: try{ ... $res = $coll->find($query)->timeout(1000) // 1 second while($res->hasNext()){ $data = $res->getNext(); } } catch(MongoCursorException $ex){ // log } catch(MongoCursorTimeoutException $ex){ // log } © Copyright 2011 10gen Inc.
44.
A word about
arrays PHP arrays are a funny beast. Take the following doc $document = array( 'normal' => array('first','second'), 'crazy' => array("0" => 'first', '1' => 'second'), 'arrayObj' => new ArrayObject(array('first', 'second')), 'object' => array('1' => 'first', '2' => 'second') ); $collection->insert($document); © Copyright 2011 10gen Inc.
45.
A word about
arrays $push only works on arrays as stored in the DB. $collection->update(array(), // works array('$push' => array('normal' => 'third')), array('$push' => array('crazy' => 'third')), // fails array('$push' => array('object' => 'third')), array('$push' => array('arrayObj' => 'third')) ); © Copyright 2011 10gen Inc.
46.
47.
GridFS : store
large files
48.
Indexing : optimize
queries
49.
Geo-spatial queries
© Copyright 2011 10gen Inc.
50.
© Copyright 2010
10gen Inc. try at try.mongodb.org
51.
© Copyright 2010
10gen Inc. drivers at mongodb.org REST Clojure ColdFusion Delphi Erlang F# Go: gomongo Groovy Haskell Javascript Lua C C++ C# Java Javascript Perl PHP Python Ruby node.js Objective C PHP PowerShell Blog post Python Ruby Scala Scheme (PLT) Smalltalk: Dolphin Smalltalk Community Supported mongodb.org Supported
52.
© Copyright 2010
10gen Inc. @mongodb conferences, appearances, and meetups http://www.10gen.com/events http://bit.ly/mongofb Facebook | Twitter | LinkedIn http://linkd.in/joinmongo download at mongodb.org support, training, and this talk brought to you by
Baixar agora