7.mongo命令行运行JavaScript脚本
admin
2023-01-19 02:20:05
0

7.mongo命令行运行JavaScript脚本


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


你可以通过在命令行写JavaScript脚本来处理数据及管理mongodb.更多信息请查看如何使用mongo脚本中的[Running .js files via a mongo shell Instance on the Server]()部分.

本文介绍了如何通过mongo命令行中写JavaScript脚本来连接MongoDB.

① 打开新的连接

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

new Mongo()new Mongo()new Mongo()

以下示例是以MongoDB在dashidan.com默认端口运行, 并且将全局数据库变量设置为myDatabase,可以通过getDB()方法获取一个新的连接实例:

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

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

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

db = connect("dashidan.com: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())"

这个命令连接运行在dashidan.com,绑定27017端口的mongo实例, 并将db.getCollectionNames()方法的输出返回.

2.执行JavaScript文件

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

mongo dashidan.com:27017/test myjsfile.js

这个命令连接运行在dashidan.com,绑定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()`方法中路径没有自动查找功能

如果当前路径和绝对路径都找不到文件, 则改脚本不会执行.

④ 参考文章

 官方文档



相关内容

热门资讯

伊朗称做好长期作战的准备,专家... 伊朗伊斯兰革命卫队称已做好长期战争的准备,新型武器正在研发中,尚未大规模使用。伊朗外长也表示做好应对...
特朗普要求库尔德人协助对伊朗行... 特朗普3月5号在接受采访的时候,鼓励伊拉克境内的库尔德武装越境进入伊朗。另外还有媒体报道,他还要求伊...
液晶电视背光坏了一个其他的还亮... 液晶电视在进行背光灯线路连接的时候,大多数都是采用串联的线路连接方式,如果发生了一个背光灯工作损坏,...
抽油烟机突然不工作了灯还亮 1、最大的可能就是抽烟机里面的电机出现了故障,导致不能正常的运作,或许是这台抽烟机使用的年限很长了,...
冰箱门关了里面灯还亮怎么办 可能是电压问题,需要及时检查排除冰箱电容过、压缩机故障;也可能是冰箱电容或压缩机损坏,可以更换电容或...
为什么空调关了外机还一直在转 空调关了外机一直在转的原因有几种:1、关机前排出的冷煤气还是得继续散热导致外机一直转。2控制电路部分...
为什么空调会漏水 空调漏水是一个常见的问题,特别是在高湿度环境下使用空调时。空调漏水的原因可以有多种,以下是一些可能的...
谁将出任伊朗新领导人?专家:一... 美国总统特朗普3月6日向伊朗发出“无条件投降”的最后通牒,并表示美国正寻找一位亲美以的伊朗新领导人。...
离婚可以冷静,家暴没有冷静期 “离婚冷静期发生家庭暴力该怎么办?如何能让遭遇家暴的受害者快速离婚,尽早逃离危险?”近日,全国人大代...
特朗普称亲自选定伊朗新领导人,... 美国总统特朗普3月6日向伊朗发出“无条件投降”的最后通牒,并表示美国正寻找一位亲美以的伊朗新领导人。...