02-2.Mongodb基础知识之使用Mongodb Shell

在启动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执行脚本:

 

・命令行中传递脚本

wKiom1TwDgOgAWwvAAEU89YHE50473.jpg

 

如果希望使用指定的主机端口/数据库运行脚本,需要先指定。

mongo --quiet  serverhost:27017/test  script1.js script2.js ……..

 

・使用load()函数,从交互式Shell中运行脚本

wKiom1TwDimxu-P8AABTT9cIG7o640.jpg

 

在脚本中可以访问db变量,以及其它全局变量。然而,Shell辅助函数(如use dbshow 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权威指南》

你可能感兴趣的:(mongodb,脚本,shell提示)