Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Advanced Shell Tips and Tricks
Search
mongodb
April 20, 2012
1
320
Advanced Shell Tips and Tricks
MongoDB Stockholm 2012 - Advanced Shell Tips and Tricks - Spencer Brody, Engineer, 10gen
mongodb
April 20, 2012
Tweet
Share
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.4k
Turning off the LAMP Hunter Loftis, Skookum Digital Works
mongodb
2
1.5k
Mobilize Your MongoDB! Developing iPhone and Android Apps in the Cloud Grant Shipley, Red Hat
mongodb
0
540
Beanstalk Data - MongoDB In Production Chris Siefken, CTO Beanstalk Data
mongodb
0
550
New LINQ support in C#/.NET driver Robert Stam, 10gen
mongodb
9
41k
Welcome and Keynote Aaron Heckman, 10gen
mongodb
0
520
Webinar Introduction to MongoDB's Java Driver
mongodb
1
1.3k
Webinar Intro to Schema Design
mongodb
4
1.8k
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
A better future with KSS
kneath
240
18k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Practical Orchestrator
shlominoach
191
11k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.5k
Designing Experiences People Love
moore
143
24k
Transcript
MASTERING THE SHELL Spencer Brody –
[email protected]
@stbrody
What is the shell? • vars • functions • data
structs + types Embedded Javascript Interpreter • ObjectId("...") • new Date() • Object.bsonsize() Global Functions and Objects • db["collection"].find/count/update • short-hand for collections MongoDB driver Exposed • Doesn't require quoted keys • Don’t copy and paste too much JSON-like stuff
What is it good for? ¨ Interactive development/prototyping ¨ Debugging
¨ Test scripting (ex. MongoDB’s own regression tests) ¨ Administrative operations, lightweight scripting ¨ Learning (and teaching) MongoDB ¨ Not building apps, probably
Interactive mode ¨ Demo now J ¨ for(i = 0;
i <1000; i++) { db.test.insert({x:i, ts: new Date()}) }
Command Line ¨ --eval ¤ Printing values ¨ Pass in
a script
Loading Scripts ¨ Command line ¨ load() – also runs
The Bad: JS Types ¨ Numbers Suck (but getting better)
¤ 32/64bit signed (int/long) – 1.5.4>NumberLong(“”) ¤ Displayed funny ¤ Everything is a 64bit fp (double) ¨ Dates are a challenge ¤ new Date(“1/1/1”) ¤ Not Date(“1/1/1”) -> string
The Bad: JS is Slow ¨ Shell ¤ Safe/GLE ¤
Loops and updates ¤ Data conversions ¨ Server ¤ It pretty much applies here too ¤ Be careful with numbers as well
Shell helpers ¨ Show collections/dbs ¨ Use <db>
Cursors ¨ Cursors printed by iterating and printing 20 values
¨ find automatically sets “it” global var ¨ Cursors as first-class objects
Run Commands ¨ db.runCommand({…}) ¨ db.runCommand(“getLastError”) ¨ db.adminCommand({…})
Useful Commands ¨ getCmdLineOpts ¨ ping ¨ isMaster ¨ reIndex
¨ sharding ¨ replication
Help > help > help admin > help misc >
db.help() > db.coll.help()
Expose Functions ¨ Leave off the () to see the
function: > db.getSiblingDB function (name) { return this.getMongo().getDB(name);
Cool functions ¨ printjson -> tojson ¨ forEach on array/query/cursor
> [{x:1},{y:1}].forEach(function(x){printjson(x)}) { "x" : 1 } { "y" : 1 } ¨ Object.bsonsize Object.bsonsize(c.findOne({name:”scott”})) ¨ load(file) ¨ run(file)
Print all Indexes db.getCollectionNames(). forEach(function(x){ print(“Collection: “ + x); printjson(db[x].getIndexes());
})
Getting the Biggest Doc var cursor = db.coll.find(); var biggest=0;
var doc = {}; cursor.forEach(function (x) { var size = Object.bsonsize(x); if (size > biggest) { biggest=size; doc = x; } });
.mongorc.js ¨ File loaded at startup ¨ Can be used
to setup functions you always want defined ¨ Can set custom prompts
Questions ¨ That’s all…folks! ¨ try.mongodb.org – web based shell
¨
[email protected]