目前為止,我們已經證實了MongoDB Shell的價值,可以用它試驗數據和數據庫管理操作。但是,既然我們可能會在Shell中花費大量的時間,最好能知道如何獲得幫助。
內置的幫助命令應該是首先要考慮的。db.help
會列出操作數據庫對象的常用方法,執行db.foo.help
會列出操作集合的常用方法。
Shell中還有內置的Tab補全機制,輸入方法的前幾個字母后按兩下Tab鍵,你會看到所有匹配的方法。下面是對所有以get打頭的集合方法的Tab補全:
> db.foo.get db.foo.getCollection( db.foo.getIndexSpecs( db.foo.getName( db.foo.getDB( db.foo.getIndexes( db.foo.getShardVersion( db.foo.getFullName( db.foo.getIndices( db.foo.getIndexKeys( db.foo.getMongo(
如果有更大的雄心壯志,又熟悉JavaScript,那麼Shell能讓你很輕鬆地查看任意指定方法的實現。舉例來說,假設你想知道save
方法到底是如何工作的。你當然可以查閱MongoDB的源代碼,但還有更簡單的方法,只需鍵入不帶執行括號的方法名即可。我們一般是這樣執行save
的:
> db.numbers.save({num: 123123123});
這是查看save
實現的方法:
> db.numbers.save function (obj) { if (obj == null || typeof obj == "undefined") { throw "can't save a null"; } if (typeof obj._id == "undefined") { obj._id = new ObjectId; return this.insert(obj); }else{ return this.update({_id:obj._id}, obj, true); } }
仔細閱讀函數定義,你會發現save
只是對insert
和update
的封裝。如果正保存的對象沒有_id
字段,這個方法會添加該字段,調用insert
;否則執行更新。
這個查看Shell方法的小技巧很好用,在探索MongoDB Shell時記得要多用。