Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
mongodb_web_application_-_MongoDC_2011.ppt.pdf
Search
mongodb
July 11, 2011
Programming
480
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
mongodb_web_application_-_MongoDC_2011.ppt.pdf
mongodb
July 11, 2011
More Decks by mongodb
See All by mongodb
NoSQL Now! 2012
mongodb
18
3.4k
MongoDB 2.2 At the Silicon Valley MongoDB User Group
mongodb
9
1.5k
Turning off the LAMP Hunter Loftis, Skookum Digital Works
mongodb
2
1.6k
Mobilize Your MongoDB! Developing iPhone and Android Apps in the Cloud Grant Shipley, Red Hat
mongodb
0
590
Beanstalk Data - MongoDB In Production Chris Siefken, CTO Beanstalk Data
mongodb
0
590
New LINQ support in C#/.NET driver Robert Stam, 10gen
mongodb
9
41k
Welcome and Keynote Aaron Heckman, 10gen
mongodb
0
560
Webinar Introduction to MongoDB's Java Driver
mongodb
1
1.3k
Webinar Intro to Schema Design
mongodb
4
1.8k
Other Decks in Programming
See All in Programming
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
480
Workers Cache を知る
syumai
0
230
The Rails Doctrine Decade
koic
2
370
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
240
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
920
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
140
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.2k
AWSに止められる覚悟してますか?
morizo_1984
1
190
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
3.3k
setup-vp GitLab対応の裏側
naokihaba
0
120
すこし踏み込む CancellationToken
htkym
2
980
iOSDC2026登壇資料.pdf
riofujimon
0
180
Featured
See All Featured
Design in an AI World
tapps
1
330
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
950
Documentation Writing (for coders)
carmenintech
77
5.5k
Speed Design
sergeychernyshev
33
2.1k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Mind Mapping
helmedeiros
1
370
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Utilizing Notion as your number one productivity tool
mfonobong
4
600
Amusing Abliteration
ianozsvald
1
310
Side Projects
sachag
456
43k
Transcript
http://mongodb.org http://10gen.com Building applications with MongoDB – An introduction MongoDC
– June 27, 2011 Nosh Petigara
[email protected]
@noshinosh
Today’s Talk • MongoDB: Data modeling, queries, geospatial, updates, map reduce
• Using a location-based app as an example • Example Works in MongoDB JS shell
Application Goals Places Check ins (1) Q: Current location A:
Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
Documents doc1 = { _id: 4b97e62bf1d8c7152c9ccb74, key1: value1, key2:
value2, key3: {..., ..., ...}, key4: [..., ..., ] }
Collections doc1, doc2, doc3 Places Users Checkins doc3, doc4, doc5
doc6, doc7, doc8
place1 = { name: "10gen HQ”, address: ”134 5th
Avenue 3rd Floor”, city: "New York”, zip: "10011” } db.places.find({zip:”10011”}).limit(10) Places v1
place1 = { name: "10gen HQ”, address: "17 West
18th Street 8th Floor”, city: "New York”, zip: "10011”, tags: [“business”, “recommended”] } db.places.find({zip:”10011”, tags:”business”}) Places v2
place1 = { name: "10gen HQ”, address: "17 West
18th Street 8th Floor”, city: "New York”, zip: "10011”, tags: [“business”, “cool place”], latlong: [40.0,72.0] } db.places.ensureIndex({latlong:”2d”}) db.places.find({latlong:{$near:[40,70]}}) Places v3
place1 = { name: "10gen HQ”, address: "17 West
18th Street 8th Floor”, city: "New York”, zip: "10011”, latlong: [40.0,72.0], tags: [“business”, “cool place”], tips: [ {user:"nosh", time:6/26/2010, tip:"stop by for office hours on Wednesdays from 4-6pm"}, {.....}, {.....} ] } Places v4
Creating your indexes db.places.ensureIndex({tags:1}) db.places.ensureIndex({name:1}) db.places.ensureIndex({latlong:”2d”}) Finding places: db.places.find({latlong:{$near:[40,70]}}) With
regular expressions: db.places.find({name: /^typeaheadstring/) By tag: db.places.find({tags: “business”}) Querying your Places
Initial data load: db.places.insert(place1) Updating tips: db.places.update({name:"10gen HQ"}, {$push :{tips:
{user:"nosh", time:6/26/2010, tip:"stop by for office hours on Wednesdays from 4-6"}}}}
$set, $unset, $rename $push, $pop, $pull, $addToSet $inc Atomic Updates
Application Goals Places Check ins (1) Q: Current location A:
Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
user1 = { name: “nosh” email: “
[email protected]
”, . . .
checkins: [4b97e62bf1d8c7152c9ccb74, 5a20e62bf1d8c736ab] } checkins [] = ObjectId reference to checkin collection Users
checkin1 = { place: “10gen HQ”, ts: 6/7/2011 10:12:00, userId:
<objectid of user> } Check-in = 2 ops Insert check in object [checkin collection] Update ($push) user object [user collection] Indexes: db.checkins.ensureIndex({place:1, ts:1}) db.checkins.ensureIndex({ts:1}) Checkins
Application Goals Places Check ins (1) Q: Current location A:
Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
Simple Stats db.checkins.find({place: “10gen HQ”) db.checkins.find({place: “10gen HQ”}) .sort({ts:-1}).limit(10) db.checkins.find({place:
“10gen HQ”, ts: {$gt: midnight}}).count() db.checkins.find().sort(ts:-1)}.limit(50)
Stats with MapReduce mapFunc = function() { emit(this.place, 1);} reduceFunc
= function(key, values) { return Array.sum(values); } db.checkins.mapReduce(mapFunc,reduceFunc, {query: {timestamp: {$gt:nowminus3hrs}}, out: “result”}) result = [{_id:”10gen HQ”, value: 17}, {…..}, {….}] db.result.find({ value: {$gt: 15}})
Application Goals Places Check ins (1) Q: Current location A:
Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
Single Master Deployments Primary/Master Secondary/Slave • Configure as a replica set
for automated failover • Add more secondaries to scale reads
Auto Sharded Deployment Primary/Master Secondary/Slave MongoS • Autosharding distributes data among
two or more replica sets • Mongo Config Server(s) handles distribution & balancing • Transparent to applications Mongo Config
Use Cases • RDBMS replacement for high-traffic web applications • Content Management-type
applications • Real-time analytics • High-speed data logging Web 2.0, Media, SaaS, Gaming, Finance, Telecom, Healthcare
Nosh Petigara
[email protected]
Director of Product Strategy, 10gen http://mongodb.org http://10gen.com
- We are hiring! - @mongodb
[email protected]
@noshinosh
MongoDB in Production