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.3k
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
510
Beanstalk Data - MongoDB In Production Chris Siefken, CTO Beanstalk Data
mongodb
0
520
New LINQ support in C#/.NET driver Robert Stam, 10gen
mongodb
9
41k
Welcome and Keynote Aaron Heckman, 10gen
mongodb
0
490
Webinar Introduction to MongoDB's Java Driver
mongodb
1
1.2k
Webinar Intro to Schema Design
mongodb
4
1.8k
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Embracing the Ebb and Flow
colly
88
4.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How to Ace a Technical Interview
jacobian
280
24k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Producing Creativity
orderedlist
PRO
347
40k
A designer walks into a library…
pauljervisheath
209
24k
Navigating Team Friction
lara
190
15k
Into the Great Unknown - MozCon
thekraken
40
2.1k
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]