首页 » MongoDB实战 » MongoDB实战全文在线阅读

《MongoDB实战》2.4 获得帮助

关灯直达底部

目前为止,我们已经证实了MongoDB Shell的价值,可以用它试验数据和数据库管理操作。但是,既然我们可能会在Shell中花费大量的时间,最好能知道如何获得帮助。

内置的帮助命令应该是首先要考虑的。db.help会列出操作数据库对象的常用方法,执行db.foo.help会列出操作集合的常用方法。

Shell中还有内置的Tab补全机制,输入方法的前几个字母后按两下Tab键,你会看到所有匹配的方法。下面是对所有以get打头的集合方法的Tab补全:

> db.foo.getdb.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时记得要多用。