MongoDB文档翻译-mongo Shell-给mongo Shell编写脚本

说明:英文原文地址:https://docs.mongodb.com/v3.2/tutorial/write-scripts-for-the-mongo-shell/
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。

给mongo Shell编写脚本

你可以用Javascript给mongoshell编写脚本,对MongoDB中的数据进行操作,或者执行管理操作。欲知关于mongoshell的更多信息,参见在服务器上通过mongo shell实例运行.js文件部分以获得关于使用这些mongo脚本的更多信息。

本篇文章简要介绍了编写Javascript脚本以便用mongo shell来访问MongoDB。

打开新连接

mongoshell或者从Javascript文件中,可用用Mongo()构造方法来实例化数据库连接:

new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)

下面的例子初始化了一个新的连接到运行在本机默认端口上的MongoDB实例,用getDB()方法把全局db变量设为myDatabase

conn = new Mongo();
db = conn.getDB("myDatabase");

如果要连接到需要强制访问控制的MongoDB实例,可用用db.auth()方法来认证。

此外,也可以用connect()方法来连接到MongoDB实例。以下例子连接到运行在localhost(本地)非默认端口27020上的MongoDB实例,然后设置全局db变量:

db = connect("localhost:27020/myDatabase");

交互式和使用脚本的mongo的不同

当给mongoshell编写脚本时,注意以下几点:

  • 要设置db全局变量,用getDB()方法或者connect()方法。你可以把数据库引用赋值给除db之外的变量。

  • mongoshell中的写操作默认用{w:1}write concern。若执行批量操作,使用Bulk()方法。参考写方法确认以获取更多信息。

  • 不可以在Javascript脚本中使用任何shell帮助(如 use <dbname>show dbs等),应为它们不是有效的Javascript代码。

    下面的表格把常用的mongoshell帮助命令对应到相应的Javascript等价代码:

Shell 帮助命令JavaScript 等价代码
show dbs, show databasesdb.adminCommand('listDatabases')
usedb = db.getSiblingDB('')
show collectionsdb.getCollectionNames()
show usersdb.getUsers()
show rolesdb.getRoles({showBuiltinRoles: true})
show logdb.adminCommand({ 'getLog' : '' })
show logsdb.adminCommand({ 'getLog' : '*' })
itcursor = db.collection.find()if ( cursor.hasNext() ){ cursor.next();}

* 在交互模式,mongo打印出操作结果,包括所有游标的内容。在Javascript中,可以使用print()函数或者mongoshell特有的返回格式化后JSON的函数printjson()来打印内容。

例子:

要在mongoshell脚本中打印一个游标的所有数据,使用如下惯用的方法:

cursor = db.collection.find();
while ( cursor.hasNext() ) {
   printjson( cursor.next() );
}

执行脚本

在命令行中,用mongo来执行Javascript脚本。

–eval选项

--eval选项,给mongo传递一个Javascript片段,如下:

mongo test --eval "printjson(db.getCollectionNames())"

以上代码使用mongoshell连接到运行在本地27017端口上的mongod或者mongos实例,返回与db.getCollectionName()相同的输出。

执行Javascript文件

你可以给mongoshell指定一个.js文件,mongo将会直接执行Javascript。如下:

mongo localhost:27017/test myjsfile.js

该操作连接到本地27017端口上的mongod实例上的test数据库,然后在mongoshell中执行myjsfile.js文件。

你可以在Javascript文件的Mongo()构造函数中指定mongodb连接参数。参见打开新连接

可用在mongoshell中用load()函数执行.js文件,如下:

load("myjstest.js")

该函数载入并执行myjstest.js文件。

load()函数接受相对和绝对路径。若mongoshell的当前工作目录是/data/dbmyjstest.js/data/db/scripts目录中,以下在mongo`shell中的的命令是等价的。

load("scripts/myjstest.js")
load("/data/db/scripts/myjstest.js")

注意:

load()函数没有搜索路径。如果脚本不在当前工作目录或者全路径中,mongo没法找到文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值