runoops.com

mongo Shell 编写脚本

可以mongo在JavaScript中为Shell 编写脚本,以在MongoDB中操纵数据或执行管理操作。

本教程提供了有关编写使用mongo shell程序访问MongoDB的JavaScript的介绍。

打开新的连接

mongo shell或JavaScript文件,您可以使用Mongo() 构造函数实例化数据库连接

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

考虑以下示例,该示例实例化到默认端口上在localhost上运行的MongoDB实例的新连接,并将全局db变量设置为myDatabase使用 getDB()方法:

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

如果连接到实施访问控制的MongoDB实例,则可以使用该db.auth()方法进行身份验证。

此外,您可以使用该connect()方法连接到MongoDB实例。以下示例连接到localhost使用非默认端口运行的MongoDB实例,27020并设置了全局db变量:

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

Shell与mongo脚本的差异

Shell Helpers JavaScript Equivalents
show dbs, show databases
db.adminCommand('listDatabases')
use <db>
db = db.getSiblingDB('<db>')
show collections
db.getCollectionNames()
show users
db.getUsers()
show roles
db.getRoles({showBuiltinRoles: true})
show log <logname>
db.adminCommand({ 'getLog' : '<logname>' })
show logs
db.adminCommand({ 'getLog' : '*' })
it
cursor = db.collection.find()
if ( cursor.hasNext() ){
   cursor.next();
}

在交互模式下,mongo打印包括所有光标内容在内的操作结果。在脚本中,使用JavaScript print()函数或返回格式化JSON 的mongo 特定printjson()函数。

例:要在mongoShell脚本中打印结果游标中的所有项目,请使用以下惯用法:

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

脚本

在系统提示下,用于mongo调用JavaScript。

--eval 选项:

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

执行一个JavaScript文件:

mongo localhost:27017/test myjsfile.js

您可以使用函数.jsmongo shell程序内执行文件load(),如下所示:

load("myjstest.js")