目前为止,我们已经证实了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
只是对insert
和update
的封装。如果正保存的对象没有_id
字段,这个方法会添加该字段,调用insert
;否则执行更新。
这个查看Shell方法的小技巧很好用,在探索MongoDB Shell时记得要多用。