讀古今文學網 > MongoDB實戰 > 2.4 獲得幫助 >

2.4 獲得幫助

目前為止,我們已經證實了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只是對insertupdate的封裝。如果正保存的對象沒有_id字段,這個方法會添加該字段,調用insert;否則執行更新。

這個查看Shell方法的小技巧很好用,在探索MongoDB Shell時記得要多用。