SlideShare a Scribd company logo
1 of 22
Building Your First

                      Application
        Kevin Hanson
  Solutions Architect, 10gen
      Kevin@10gen.com
        @hungarianhc
Step 1 - What is mongoDB??
• Scalable, High-Performance, Open Source, Document-
  Oriented Database
   – JSON (well... BSON) Storage Model
   – Indexes and Full Query Language
   – Easy for Developers to Pick Up


• More Features at http://www.mongodb.org/


• Overview Video: http://www.10gen.com/what-is-mongodb
Step 2 - Stop Thinking Relational
Tables to Documents
             {
                 title: ‘MongoDB’,
                 contributors: [
                   { name: ‘Eliot Horowitz’,
                     email: ‘eliot@10gen.com’ },
                   { name: ‘Dwight Merriman’,
                     email: ‘dwight@10gen.com’ }
                 ],
                 model: {
                    relational: false,
                    awesome: true
                 }
             }
Parallels
RDBMS               MongoDB
Table               Collection
Row                 Document
Column              Field
Index               Index

Join                Embedding / Linking

Schema Object
Rich Data Model
{ _id : ObjectId("4c4ba5c0672c685e5e8aabf3"),
  author : "roger",
  date : "Sat Jul 24 2010 19:47:11 GMT-0700 (PDT)",
  text : "Spirited Away",
  tags : [ "Tezuka", "Manga" ],
  comments : [
        {
                 author : "Fred",
                 date : "Sat Jul 24 2010 20:51:03 GMT-0700 (PDT)",
                 text : "Best Movie Ever"
        }
  ]}
Querying
>db.posts.find()

  { _id : ObjectId("4c4ba5c0672c685e5e8aabf3"),
    author : "roger",
    date : "Sat Jul 24 2010 19:47:11 GMT-0700 (PDT)",
    text : "Spirited Away",
    tags : [ "Tezuka", "Manga" ] }

Notes:
 - _id is unique, but can be anything you’d like
Secondary Indexes
Create index on any Field in Document

 // 1 means ascending, -1 means descending

 >db.posts.ensureIndex({author: 1})

 >db.posts.find({author: 'roger'})

 { _id     : ObjectId("4c4ba5c0672c685e5e8aabf3"),
   author : "roger",
   ... }
Secondary Indexes
// Index nested documents
> db.posts.ensureIndex( “comments.author”:1 )
db.posts.find({‘comments.author’:’Fred’})

// Index on tags
> db.posts.ensureIndex( tags: 1)
> db.posts.find( { tags: ’Manga’ } )

// geospatial index
> db.posts.ensureIndex( “author.location”: “2d” )
> db.posts.find( “author.location” : { $near : [22,42] } )
Atomic Operations
• $set, $unset, $inc, $push, $pushAll, $pull, $pullAll,
  $bit

> comment = { author: “fred”,
              date: new Date(),
              text: “Best Movie Ever”}

> db.posts.update( { _id: “...” },
               $push: {comments: comment} );
Step 3 - Let’s Build A Sample App
        Metadata Catalog
                Q: Patients Matching Query
                        A: Patients




Patient Data




               Metadata
Inserting a Document

var p = { name: “John Smith”,
      address: “578 Broadway, 7th Floor”,
      city: “New York”,
      birthday: “2/15/2012”}

> db.patients.save(p)
Let’s Add Some Information

     { name: “John Smith”,
     address: “578 Broadway, 7th Floor”,
     city: “New York”,
     birthday: “2/15/2012”,
     clinics: [“Good Health Clinic”, “New York
General Care”]}
Geo Tags

     { name: “John Smith”,
     address: “578 Broadway, 7th Floor”,
     city: “New York”,
     birthday: “2/15/2012”,
     clinics: [“Good Health Clinic”, “New York
General Care”],
     latlong: [40.0, 72.0]}
Doctor Notes

     { name: “John Smith”,
     address: “578 Broadway, 7th Floor”,
     city: “New York”,
     birthday: “2/15/2012”,
     clinics: [“Good Health Clinic”, “New York
General Care”],
     latlong: [40.0, 72.0],
     notes: [{doctor:”Kevin", time:3/15/2012,
     note:”Patient seems healthy to me!"}]}
Updating Doctor Notes


db.places.update({name:”John Smith"},
{$push :{notes: {doctor:”Kevin", time:3/15/2012,
           note:”Patient seems healthy to
me!"}}}}
Indexing / Querying Metadata
// List all people whose name is “John Smith”
> db.posts.ensureIndex( “name”:1 )
db.posts.find({‘name’:’John Smith’})

// List all people whose name is “John Smith”, sorted by
birthday descending
> db.posts.ensureIndex( name: 1, birthday: -1)
> db.posts.find( { name: ’John Smith’ } ).sort({birthday: -1})

// Return people that “Doctor Bob” made notes about, sorted
by their name
> db.posts.ensureIndex( notes.doctor: 1, name: 1)
> db.posts.find( “notes.doctor”: “Doctor Bob”).sort({name:1})
Demo ~ MongoDB Shell
Step 4 - Scale Your App w/
       Replica Sets
Replica Sets
Replica Sets




Add Secondaries for High Availability / Read Scale

 High Write Load / Big Data Set -> Use mongoDB Range
Based Auto Sharding (A Future Webinar / mongoDB Day)
More info at http://www.mongodb.org/

          conferences, appearances, and meetups
                        http://www.10gen.com/events


                              Kevin Hanson
                            kevin@10gen.com
                              @hungarianhc


    Facebook               |    Twitter      |        LinkedIn
http://bit.ly/mongofb            @mongodb        http://linkd.in/joinmongo

More Related Content

What's hot

Back to Basics 1: Thinking in documents
Back to Basics 1: Thinking in documentsBack to Basics 1: Thinking in documents
Back to Basics 1: Thinking in documents
MongoDB
 
MongoDB Schema Design
MongoDB Schema DesignMongoDB Schema Design
MongoDB Schema Design
Alex Litvinok
 

What's hot (19)

MongoDB Schema Design: Four Real-World Examples
MongoDB Schema Design: Four Real-World ExamplesMongoDB Schema Design: Four Real-World Examples
MongoDB Schema Design: Four Real-World Examples
 
MongoDB San Francisco 2013: Data Modeling Examples From the Real World presen...
MongoDB San Francisco 2013: Data Modeling Examples From the Real World presen...MongoDB San Francisco 2013: Data Modeling Examples From the Real World presen...
MongoDB San Francisco 2013: Data Modeling Examples From the Real World presen...
 
Data Modeling for the Real World
Data Modeling for the Real WorldData Modeling for the Real World
Data Modeling for the Real World
 
Socialite, the Open Source Status Feed Part 3: Scaling the Data Feed
Socialite, the Open Source Status Feed Part 3: Scaling the Data FeedSocialite, the Open Source Status Feed Part 3: Scaling the Data Feed
Socialite, the Open Source Status Feed Part 3: Scaling the Data Feed
 
Schema Design with MongoDB
Schema Design with MongoDBSchema Design with MongoDB
Schema Design with MongoDB
 
Socialite, the Open Source Status Feed
Socialite, the Open Source Status FeedSocialite, the Open Source Status Feed
Socialite, the Open Source Status Feed
 
Webinar: Back to Basics: Thinking in Documents
Webinar: Back to Basics: Thinking in DocumentsWebinar: Back to Basics: Thinking in Documents
Webinar: Back to Basics: Thinking in Documents
 
Webinar: Schema Design
Webinar: Schema DesignWebinar: Schema Design
Webinar: Schema Design
 
Back to Basics Webinar 3: Schema Design Thinking in Documents
 Back to Basics Webinar 3: Schema Design Thinking in Documents Back to Basics Webinar 3: Schema Design Thinking in Documents
Back to Basics Webinar 3: Schema Design Thinking in Documents
 
Dev Jumpstart: Schema Design Best Practices
Dev Jumpstart: Schema Design Best PracticesDev Jumpstart: Schema Design Best Practices
Dev Jumpstart: Schema Design Best Practices
 
Back to Basics 1: Thinking in documents
Back to Basics 1: Thinking in documentsBack to Basics 1: Thinking in documents
Back to Basics 1: Thinking in documents
 
MongoDB Schema Design
MongoDB Schema DesignMongoDB Schema Design
MongoDB Schema Design
 
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentosConceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
 
Back to Basics Webinar 3 - Thinking in Documents
Back to Basics Webinar 3 - Thinking in DocumentsBack to Basics Webinar 3 - Thinking in Documents
Back to Basics Webinar 3 - Thinking in Documents
 
The Fine Art of Schema Design in MongoDB: Dos and Don'ts
The Fine Art of Schema Design in MongoDB: Dos and Don'tsThe Fine Art of Schema Design in MongoDB: Dos and Don'ts
The Fine Art of Schema Design in MongoDB: Dos and Don'ts
 
Back to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLBack to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQL
 
Socialite, the Open Source Status Feed Part 2: Managing the Social Graph
Socialite, the Open Source Status Feed Part 2: Managing the Social GraphSocialite, the Open Source Status Feed Part 2: Managing the Social Graph
Socialite, the Open Source Status Feed Part 2: Managing the Social Graph
 
Back to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationBack to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB Application
 
Building Apps with MongoDB
Building Apps with MongoDBBuilding Apps with MongoDB
Building Apps with MongoDB
 

Similar to Building Your First MongoDB App ~ Metadata Catalog

Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Alex Bilbie
 
Marc s01 e02-crud-database
Marc s01 e02-crud-databaseMarc s01 e02-crud-database
Marc s01 e02-crud-database
MongoDB
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
MongoDB
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
MongoDB
 

Similar to Building Your First MongoDB App ~ Metadata Catalog (20)

Managing Social Content with MongoDB
Managing Social Content with MongoDBManaging Social Content with MongoDB
Managing Social Content with MongoDB
 
Mongodb intro
Mongodb introMongodb intro
Mongodb intro
 
Webinar: General Technical Overview of MongoDB for Dev Teams
Webinar: General Technical Overview of MongoDB for Dev TeamsWebinar: General Technical Overview of MongoDB for Dev Teams
Webinar: General Technical Overview of MongoDB for Dev Teams
 
Building your first app with MongoDB
Building your first app with MongoDBBuilding your first app with MongoDB
Building your first app with MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
 
Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross LawleyOSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
 
MongoDB, PHP and the cloud - php cloud summit 2011
MongoDB, PHP and the cloud - php cloud summit 2011MongoDB, PHP and the cloud - php cloud summit 2011
MongoDB, PHP and the cloud - php cloud summit 2011
 
MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)
 
Starting with MongoDB
Starting with MongoDBStarting with MongoDB
Starting with MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Marc s01 e02-crud-database
Marc s01 e02-crud-databaseMarc s01 e02-crud-database
Marc s01 e02-crud-database
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
 
MongoDB Schema Design: Practical Applications and Implications
MongoDB Schema Design: Practical Applications and ImplicationsMongoDB Schema Design: Practical Applications and Implications
MongoDB Schema Design: Practical Applications and Implications
 
Schema design
Schema designSchema design
Schema design
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
Back to Basics 2017: Mí primera aplicación MongoDB
Back to Basics 2017: Mí primera aplicación MongoDBBack to Basics 2017: Mí primera aplicación MongoDB
Back to Basics 2017: Mí primera aplicación MongoDB
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

Building Your First MongoDB App ~ Metadata Catalog

  • 1. Building Your First Application Kevin Hanson Solutions Architect, 10gen Kevin@10gen.com @hungarianhc
  • 2. Step 1 - What is mongoDB?? • Scalable, High-Performance, Open Source, Document- Oriented Database – JSON (well... BSON) Storage Model – Indexes and Full Query Language – Easy for Developers to Pick Up • More Features at http://www.mongodb.org/ • Overview Video: http://www.10gen.com/what-is-mongodb
  • 3. Step 2 - Stop Thinking Relational
  • 4. Tables to Documents { title: ‘MongoDB’, contributors: [ { name: ‘Eliot Horowitz’, email: ‘eliot@10gen.com’ }, { name: ‘Dwight Merriman’, email: ‘dwight@10gen.com’ } ], model: { relational: false, awesome: true } }
  • 5. Parallels RDBMS MongoDB Table Collection Row Document Column Field Index Index Join Embedding / Linking Schema Object
  • 6. Rich Data Model { _id : ObjectId("4c4ba5c0672c685e5e8aabf3"), author : "roger", date : "Sat Jul 24 2010 19:47:11 GMT-0700 (PDT)", text : "Spirited Away", tags : [ "Tezuka", "Manga" ], comments : [ { author : "Fred", date : "Sat Jul 24 2010 20:51:03 GMT-0700 (PDT)", text : "Best Movie Ever" } ]}
  • 7. Querying >db.posts.find() { _id : ObjectId("4c4ba5c0672c685e5e8aabf3"), author : "roger", date : "Sat Jul 24 2010 19:47:11 GMT-0700 (PDT)", text : "Spirited Away", tags : [ "Tezuka", "Manga" ] } Notes: - _id is unique, but can be anything you’d like
  • 8. Secondary Indexes Create index on any Field in Document // 1 means ascending, -1 means descending >db.posts.ensureIndex({author: 1}) >db.posts.find({author: 'roger'}) { _id : ObjectId("4c4ba5c0672c685e5e8aabf3"), author : "roger", ... }
  • 9. Secondary Indexes // Index nested documents > db.posts.ensureIndex( “comments.author”:1 ) db.posts.find({‘comments.author’:’Fred’}) // Index on tags > db.posts.ensureIndex( tags: 1) > db.posts.find( { tags: ’Manga’ } ) // geospatial index > db.posts.ensureIndex( “author.location”: “2d” ) > db.posts.find( “author.location” : { $near : [22,42] } )
  • 10. Atomic Operations • $set, $unset, $inc, $push, $pushAll, $pull, $pullAll, $bit > comment = { author: “fred”, date: new Date(), text: “Best Movie Ever”} > db.posts.update( { _id: “...” }, $push: {comments: comment} );
  • 11. Step 3 - Let’s Build A Sample App Metadata Catalog Q: Patients Matching Query A: Patients Patient Data Metadata
  • 12. Inserting a Document var p = { name: “John Smith”, address: “578 Broadway, 7th Floor”, city: “New York”, birthday: “2/15/2012”} > db.patients.save(p)
  • 13. Let’s Add Some Information { name: “John Smith”, address: “578 Broadway, 7th Floor”, city: “New York”, birthday: “2/15/2012”, clinics: [“Good Health Clinic”, “New York General Care”]}
  • 14. Geo Tags { name: “John Smith”, address: “578 Broadway, 7th Floor”, city: “New York”, birthday: “2/15/2012”, clinics: [“Good Health Clinic”, “New York General Care”], latlong: [40.0, 72.0]}
  • 15. Doctor Notes { name: “John Smith”, address: “578 Broadway, 7th Floor”, city: “New York”, birthday: “2/15/2012”, clinics: [“Good Health Clinic”, “New York General Care”], latlong: [40.0, 72.0], notes: [{doctor:”Kevin", time:3/15/2012, note:”Patient seems healthy to me!"}]}
  • 16. Updating Doctor Notes db.places.update({name:”John Smith"}, {$push :{notes: {doctor:”Kevin", time:3/15/2012, note:”Patient seems healthy to me!"}}}}
  • 17. Indexing / Querying Metadata // List all people whose name is “John Smith” > db.posts.ensureIndex( “name”:1 ) db.posts.find({‘name’:’John Smith’}) // List all people whose name is “John Smith”, sorted by birthday descending > db.posts.ensureIndex( name: 1, birthday: -1) > db.posts.find( { name: ’John Smith’ } ).sort({birthday: -1}) // Return people that “Doctor Bob” made notes about, sorted by their name > db.posts.ensureIndex( notes.doctor: 1, name: 1) > db.posts.find( “notes.doctor”: “Doctor Bob”).sort({name:1})
  • 18. Demo ~ MongoDB Shell
  • 19. Step 4 - Scale Your App w/ Replica Sets
  • 21. Replica Sets Add Secondaries for High Availability / Read Scale High Write Load / Big Data Set -> Use mongoDB Range Based Auto Sharding (A Future Webinar / mongoDB Day)
  • 22. More info at http://www.mongodb.org/ conferences, appearances, and meetups http://www.10gen.com/events Kevin Hanson kevin@10gen.com @hungarianhc Facebook | Twitter | LinkedIn http://bit.ly/mongofb @mongodb http://linkd.in/joinmongo