7.mongo命令行运行JavaScript脚本

7.mongo命令行运行JavaScript脚本

最新内容会在源站更新.
转载请保留原文链接: http://dashidan.com/article/mongodb/basic/7.html

你可以通过在命令行写JavaScript脚本来处理数据及管理mongodb.本文介绍了如何通过mongo命令行中写JavaScript脚本来连接MongoDB.

① 打开新的连接

在mongo命令行或者JavaScript文件中, 你可以通过Mongo()构造函数来创建一个数据库实例.

new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)
以下示例是以MongoDB在`localhost`默认端口运行, 并且将全局数据库变量设置为myDatabase,可以通过getDB()方法获取一个新的连接实例:
conn = new Mongo();
db = conn.getDB("myDatabase");

如果Mongodb连接实例设置了访问控制, 你可以通过使用db.auth()方法来认证.

另外, 你可以通过connect()方法链接MongoDB实例. 以下为连接到MongoDB绑定localhost非默认端口27020的示例:

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

② 命令输入和通过mongo脚本操作的区别

当你写mongo脚本的时候, 你需要考虑以下几点:

  • 设置全局db变量, 可以通过getDB()方法或者connect()方法, 你可以将这个数据库引用设置给其他变量.
  • Write operations in the mongo shell use a write concern of { w: 1 } by default. If performing bulk operations, use the Bulk() methods. See Write Method Acknowledgements for more information.
    Changed in version 2.6: Before MongoDB 2.6, call db.getLastError() explicitly to wait for the result of write operations.
  • 你无法在JavaScript文件中使用任何命令行帮助,(例如: use , show dbs, etc.)因为JavaScript中不支持.以下为常用命令行帮助有JavaScript对照表:
命令行帮助JavaScript
show?dbs,?show?databasesdb.adminCommand(‘listDatabases’)
use?db = db.getSiblingDB(‘’)
show?collectionsdb.getCollectionNames()
show?usersdb.getUsers()
show?rolesdb.getRoles({showBuiltinRoles: true})
show?log?db.adminCommand({ ‘getLog’ : ‘’ })
show?logsdb.adminCommand({ ‘getLog’ : ‘*’ })
itcursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); }
  • 在命令行交互模式中 mongo将所有的结果打印出来. 在JavaScript脚本中使用print()或者printjson()方法来返回JSON格式.
    例: 在JavaScript中打印全部结果:
cursor = db.collection.find();
while ( cursor.hasNext() ) {
   printjson( cursor.next() );
}

③ 写脚本

在系统命令行中, 使用mongo来使用JavaScript.

1.–eval选项

使用--eval选项来传入JavaScript脚本:

mongo test --eval "printjson(db.getCollectionNames())"
这个命令连接运行在`localhost`,绑定27017端口的mongo实例, 并将`db.getCollectionNames()`方法的输出返回.

2.执行JavaScript文件

你可以直指定定一个以.js为后缀的JavaScript文件, mongo可以直接执行.例如:

mongo localhost:27017/test myjsfile.js
这个命令连接运行在`localhost`,绑定27017端口的mongo实例, 并将`myjsfile.js`的运行结果返回. 另外, 你可以在JavaScript文件中通过`Mongo()`构造函数来执行mongodb连接参数.参考[Opening New Connections]() 查看更多信息. 在mongo命令行中你可以通过`load()`方法运行`.js`文件, 例如:
load("myjstest.js")
这个方法加载并执行`myjstest.js`文件. `load()`方法接受相对路径和绝对路径,默认为相对路径. 使用绝对路径的例子:
load("scripts/myjstest.js")
load("/data/db/scripts/myjstest.js")

load()方法中路径没有自动查找功能。如果当前路径和绝对路径都找不到文件, 则改脚本不会执行.

④ 参考文章

官方文档

⑤ 相关文章

MongoDB中文操作手册

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值