在启动Shell时指定机器名(地址)和端口就可以连接到该机器的数据库实例。
mongo somehost:27017/xxdb
通过--nodb参数启动Shell,不连接任何mongod实例。
启动之后,在需要时运行new Mongo(hostname)命令就可以连接到想要的mongod了。
>conn = new Mongo("localhost:27017")
connection to localhost:27017
>db = conn.getDB("test")
test
Shell内置了帮助文档,可以使用help命令查看。
db.help()查看数据库级别的帮助,db.foo.help()查看集合级别的帮助。
如果想知道一个函数是做什么用的,可以直接在Shell输入函数名(后不要跟小括号),这样就可以看到相应函数的JavaScript实现代码。
使用Shell执行脚本:
・命令行中传递脚本
如果希望使用指定的主机端口/数据库运行脚本,需要先指定。
mongo --quiet serverhost:27017/test script1.js script2.js ……..
・使用load()函数,从交互式Shell中运行脚本
在脚本中可以访问db变量,以及其它全局变量。然而,Shell辅助函数(如use db和show collections)不可以在文件中使用。这些辅助函数都有对应的JavaScript函数,如下:
辅助函数 | 等价函数 |
use foo | db.getSisterDB("foo") |
show dbs | db.getMongo().getDBs() |
show collections | db.getCollectionNames() |
默认情况下,Shell会在运行Shell时所处的目录下查找脚本(可以使用run("pwd")命令查看)。如果脚本不在当前目录,可以为Shell指定一个相对或绝对路径。
创建.mongorc.js文件:
如果某些脚本会被频繁的加载,可以将它们添加到mongorc.js文件中。这个脚本会在启动Shell时自动运行。
启动Shell时指定--norc参数,可以禁止加载 .mongorc.js。
例如:启动Shell时显示欢迎语。可以在宿主目录下.mongorc.js文件中添加如下内容。
//Mongodb regards
var compliment = ["attractive","intelligent","like,Batman"];
/**Math.random():获取0~1随机数
* math.floor(x)返回小于参数x的最大整数,即对浮点数向下取整.
* 使用Math.floor(Math.random())去获取你想要的一个范围内的整数。如下结果是:0<=x<3
*/
var index = Math.floor(Math.random()*3);
print("Hello, you're looking particularly "+compliment[index]+" today!");
为了实用,可以使用这个脚本创建一些自己需要的全局变量,或者是为太长的名字创建一个简短的别名,也可以重写内置函数。.mongorc.js最常见的用途之一是移除那些比较“危险”的Shell辅助函数。
//
var no = function() {
print("Not on my watch.");
};
//禁止删除数据库
db.dropDatabase = DB.prototype.dropDatabase = no;
//禁止删除集合
DBCollection.prototype.drop = no;
//禁止删除索引
DBCollection.prototype.dropIndex = no;
改变数据库函数时,要确保同时对db变量和DB原型进行改变。如果只改变了其中一个,那么db变量可能没有改变,或者这些改变在新使用的所有数据库(use anotherDB)中都不会生效。
定制Shell提示:
将prompt变量设为一个字符串或者函数,就可以重写默认的Shell提示。
如:Shell提示中输出当前时间
//Output use time
prompt = function() {
return (new Date())+">";
};
编辑符合变量:
Shell的多行支持是非常有限的:不可以编辑之前的行。为了方便地调用编辑器,可以在Shell中设置EDITOR变量(也可以在.mongorc.js环境变量中设置)>EDITOR="/usr/bin/vim"
之后如果想编辑一个变量,可以使用edit变量名这个命令,如:
>post = {"aa":1}
>edit post
修改后保存退出,变量就会重新解析加载到Shell。
PS:内容整理于《Mongodb权威指南》