SlideShare a Scribd company logo
MongoDB & PHP - Welcome What we'll cover: MongoDB quick overview
Setting up MongoDB + PHP
Actual PHP code! (https://github.com/gatesvp/php_get_started) © Copyright 2011 10gen Inc.
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.
What is MongoDB? From the website:  “Scalable, high-performance, document-oriented database” : So it's a database, with specific features: Data is stored in BSON ( think JSON )
Native arrays, nested documents
Indexing for faster queries
Map / Reduce for aggregation © Copyright 2011 10gen Inc.
What is MongoDB?   Document-oriented Databases contains Collections Collections contain Documents © Copyright 2011 10gen Inc.
What is MongoDB?   Document-oriented Collections are basically “bags of documents”. In our case, bags of JSON objects. Different Fields
Different Sizes
Indexable © Copyright 2011 10gen Inc.
What is MongoDB?   Scalable Read scaling and HA  via  Replication © Copyright 2011 10gen Inc.
What is MongoDB?   Scalable Write scaling via  Sharding © Copyright 2011 10gen Inc.
Installing MongoDB & PHP Installing MongoDB: Download your version http://www.mongodb.org/downloads On Linux: $ curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.8.1.tgz > mongo.tgz $ tar xzf mongo.tgz $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db $ ./mongodb-xxxxxxx/bin/mongod © Copyright 2011 10gen Inc.
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.
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.
Saving – Some notes When we insert the document, a couple of “magic” things happen: The  example  DB is created
The  test  collection is created
An index is created the  _id  field
An  _id  is created for the document
The  _id  is added to the document © Copyright 2011 10gen Inc.
A more complex document JSON representation Notice the friends array, contact sub-document. { _id : 'gates', name : 'Gaëtan Voyer-Perrault', friends : ['bernie', 'alvin'], followers : 18, contact : { twitter : '@gatesvp', email : 'gates@10gen.com' } } © Copyright 2011 10gen Inc.
A more complex document PHP representation Nested hashtables $doc = array( '_id' => 'gates', 'name' => 'Gaëtan Voyer-Perrault', 'friends' => array('bernie', 'alvin'), 'followers' => 18, 'contact' => array( 'twitter' =>  '@gatesvp ', 'email' =>  'gates@10gen.com ') ) ) © Copyright 2011 10gen Inc.
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.
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.
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.
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.
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.
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.
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.
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.
More on updating There are several more operators $push, $pop, $pull, $addToSet $rename
Operators are atomic within a document.
Only one operation per field. You cannot  $pop  &  $pull  an array in one command. © Copyright 2011 10gen Inc.

More Related Content

What's hot (20)

ODP
Introduction to Modern Perl
Dave Cross
 
PPTX
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Michael Wales
 
PPT
Ant
sundar22in
 
PPT
RESTFul IDEAS
Joel Amoussou
 
PPT
Os Nixon
oscon2007
 
PDF
The Joy of Smartmatch
Andrew Shitov
 
PDF
Perl6 in-production
Andrew Shitov
 
PDF
Perl6 grammars
Andrew Shitov
 
ODP
Into to DBI with DBD::Oracle
byterock
 
PPT
Php Basic
Md. Sirajus Salayhin
 
PPT
Ods Markup And Tagsets: A Tutorial
simienc
 
DOC
PHP code examples
programmingslides
 
PPT
Nine Ways to Use Network-Side Scripting
Lori MacVittie
 
PPT
PHP and MySQL with snapshots
richambra
 
PDF
Crafting [Better] API Clients
Wellfire Interactive
 
PPT
Test::Base
Tatsuhiko Miyagawa
 
PPT
Addmi 10.5-basic query-language
odanyboy
 
PDF
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Codemotion
 
PPT
Open Source Package PHP & MySQL
kalaisai
 
Introduction to Modern Perl
Dave Cross
 
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Michael Wales
 
RESTFul IDEAS
Joel Amoussou
 
Os Nixon
oscon2007
 
The Joy of Smartmatch
Andrew Shitov
 
Perl6 in-production
Andrew Shitov
 
Perl6 grammars
Andrew Shitov
 
Into to DBI with DBD::Oracle
byterock
 
Ods Markup And Tagsets: A Tutorial
simienc
 
PHP code examples
programmingslides
 
Nine Ways to Use Network-Side Scripting
Lori MacVittie
 
PHP and MySQL with snapshots
richambra
 
Crafting [Better] API Clients
Wellfire Interactive
 
Test::Base
Tatsuhiko Miyagawa
 
Addmi 10.5-basic query-language
odanyboy
 
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Codemotion
 
Open Source Package PHP & MySQL
kalaisai
 

Similar to Getting started with MongoDB and PHP (20)

PDF
PHP Loves MongoDB - Dublin MUG (by Hannes)
Mark Hillick
 
ODP
Introduction to MongoDB with PHP
fwso
 
KEY
Mongo NYC PHP Development
Fitz Agard
 
PPTX
Sekilas PHP + mongoDB
Hadi Ariawan
 
PDF
Mongo Presentation by Metatagg Solutions
Metatagg Solutions
 
KEY
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
PDF
ZendCon2010 Doctrine MongoDB ODM
Jonathan Wage
 
PPTX
Dropping ACID with MongoDB
kchodorow
 
PPTX
Introduction to MongoDB – A NoSQL Database
manikgupta2k04
 
PPTX
Mongo db basic installation
Kishor Parkhe
 
PDF
FrozenRails Training
Mike Dirolf
 
PDF
Doctrine MongoDB ODM (PDXPHP)
Kris Wallsmith
 
PDF
From mysql to MongoDB(MongoDB2011北京交流会)
Night Sailer
 
PDF
REST Web API with MongoDB
MongoDB
 
PDF
Quick & Dirty & MEAN
Troy Miles
 
PDF
MongoUK - PHP Development
Boxed Ice
 
PDF
MongoUK - PHP Development
Boxed Ice
 
KEY
Introduction to MongoDB
Alex Bilbie
 
PDF
Back to Basics 2017: Mí primera aplicación MongoDB
MongoDB
 
PDF
Mongo db basics
Harischandra M K
 
PHP Loves MongoDB - Dublin MUG (by Hannes)
Mark Hillick
 
Introduction to MongoDB with PHP
fwso
 
Mongo NYC PHP Development
Fitz Agard
 
Sekilas PHP + mongoDB
Hadi Ariawan
 
Mongo Presentation by Metatagg Solutions
Metatagg Solutions
 
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
ZendCon2010 Doctrine MongoDB ODM
Jonathan Wage
 
Dropping ACID with MongoDB
kchodorow
 
Introduction to MongoDB – A NoSQL Database
manikgupta2k04
 
Mongo db basic installation
Kishor Parkhe
 
FrozenRails Training
Mike Dirolf
 
Doctrine MongoDB ODM (PDXPHP)
Kris Wallsmith
 
From mysql to MongoDB(MongoDB2011北京交流会)
Night Sailer
 
REST Web API with MongoDB
MongoDB
 
Quick & Dirty & MEAN
Troy Miles
 
MongoUK - PHP Development
Boxed Ice
 
MongoUK - PHP Development
Boxed Ice
 
Introduction to MongoDB
Alex Bilbie
 
Back to Basics 2017: Mí primera aplicación MongoDB
MongoDB
 
Mongo db basics
Harischandra M K
 
Ad

Recently uploaded (20)

PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Ad

Getting started with MongoDB and PHP

  • 1. MongoDB & PHP - Welcome What we'll cover: MongoDB quick overview
  • 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: '[email protected]', twitter: '@gatesvp', specialties: [ 'php', 'content monetization', 'mongodb', 'powershell', ':)' ] } © Copyright 2011 10gen Inc.
  • 5. What is MongoDB? From the website: “Scalable, high-performance, document-oriented database” : So it's a database, with specific features: Data is stored in BSON ( think JSON )
  • 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. What is MongoDB? Document-oriented Collections are basically “bags of documents”. In our case, bags of JSON objects. Different Fields
  • 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. Installing MongoDB & PHP Installing MongoDB: Download your version http://www.mongodb.org/downloads On Linux: $ curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.8.1.tgz > mongo.tgz $ tar xzf mongo.tgz $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db $ ./mongodb-xxxxxxx/bin/mongod © Copyright 2011 10gen Inc.
  • 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. Saving – Some notes When we insert the document, a couple of “magic” things happen: The example DB is created
  • 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. A more complex document JSON representation Notice the friends array, contact sub-document. { _id : 'gates', name : 'Gaëtan Voyer-Perrault', friends : ['bernie', 'alvin'], followers : 18, contact : { twitter : '@gatesvp', email : '[email protected]' } } © Copyright 2011 10gen Inc.
  • 24. A more complex document PHP representation Nested hashtables $doc = array( '_id' => 'gates', 'name' => 'Gaëtan Voyer-Perrault', 'friends' => array('bernie', 'alvin'), 'followers' => 18, 'contact' => array( 'twitter' => '@gatesvp ', 'email' => '[email protected] ') ) ) © Copyright 2011 10gen Inc.
  • 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. More on updating There are several more operators $push, $pop, $pull, $addToSet $rename
  • 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. A word about transactions MongoDB does not have joins. Likewise: … no transactions across documents
  • 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(&quot;0&quot; => '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. Other features MongoDB has lots of other features. DB commands : accessible from PHP
  • 47. GridFS : store large files
  • 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