- MongoDB官方文档中文版
- MongoDB中文手册说明
- MongoDB简介
- 安装 MongoDB
- The mongo Shell
- MongoDB CRUD 操作
- 聚合
- 数据模型
- 事务
- 索引
- 安全
- 安全检查列表
- 启用访问控制
- 身份验证
- 基于角色的访问控制
- TLS / SSL(传输加密)
- 静态加密
- 客户端字段级加密
- 审计
- 网络和配置强化
- 实现字段级别修订
- 安全参考
- 附录
- 变更流
- 复制
- 分片
- 分片键
- 哈希分片
- 范围分片
- 区
- 管理分片区
- 按位置细分数据
- 用于更改SLA或SLO的分层硬件
- 按应用或客户细分数据
- 仅插入工作负载的分布式本地写入
- 管理分片区
- 使用块进行数据分区
- 在分片集群中拆分数据块
- 管理
- 存储
- 存储引擎
- 日志记录
- 管理日志记录
- GridFS
- FAQ:MongoDB 存储
- 存储引擎
- 参考
- 运算符
- 查询与映射运算符
- 更新运算符
- 聚合管道阶段
- 聚合管道操作符
- $abs (aggregation)
- $acos (aggregation)
- $acosh (aggregation)
- $add (aggregation)
- $addToSet (aggregation)
- $allElementsTrue (aggregation)
- $and (aggregation)
- $anyElementTrue (aggregation)
- $arrayElemAt (aggregation)
- $arrayToObject (aggregation)
- $asin (aggregation)
- $asinh (aggregation)
- $atan (aggregation)
- $atan2 (aggregation)
- $atanh (aggregation)
- $avg (aggregation)
- $ceil (aggregation)
- $cmp (aggregation)
- $concat (aggregation)
- $concatArrays (aggregation)
- $cond (aggregation)
- $convert (aggregation)
- $cos (aggregation)
- $dateFromParts (aggregation)
- $dateToParts (aggregation)
- $dateFromString (aggregation)
- $literal (aggregation)
- 查询修饰符
- 数据库命令
- 聚合命令
- 地理空间命令
- 查询和写操作命令
- 查询计划缓存命令
- 认证命令
- 用户管理命令
- 角色管理命令
- 复制命令
- 分片命令
- 会话命令
- 管理命令
- 诊断命令
- 免费监控命令
- 系统事件审计命令
- mongo Shell 方法
- 集合方法
- db.collection.aggregate()
- db.collection.bulkWrite()
- db.collection.copyTo()
- db.collection.count()
- db.collection.countDocuments()
- db.collection.estimatedDocumentCount()
- db.collection.createIndex()
- db.collection.createIndexes()
- db.collection.dataSize()
- db.collection.deleteOne()
- db.collection.deleteMany()
- db.collection.distinct()
- db.collection.drop()
- db.collection.dropIndex()
- db.collection.dropIndexes()
- db.collection.ensureIndex()
- db.collection.explain()
- db.collection.find()
- db.collection.findAndModify()
- db.collection.findOne()
- db.collection.findOneAndDelete()
- db.collection.findOneAndReplace()
- db.collection.findOneAndUpdate()
- db.collection.getIndexes()
- db.collection.getShardDistribution()
- db.collection.getShardVersion()
- db.collection.insert()
- db.collection.insertOne()
- db.collection.insertMany()
- db.collection.isCapped()
- db.collection.latencyStats()
- db.collection.mapReduce()
- db.collection.reIndex()
- db.collection.remove()
- db.collection.renameCollection()
- db.collection.replaceOne()
- db.collection.save()
- db.collection.stats()
- db.collection.storageSize()
- db.collection.totalIndexSize()
- db.collection.totalSize()
- db.collection.update()
- db.collection.updateOne()
- db.collection.updateMany()
- db.collection.watch()
- db.collection.validate()
- 词汇表
- 默认的MongoDB端口
- 默认的MongoDB读/写关注
- 服务器会话
- MongoDB驱动
- FAQ
- 联系我们
- 更多资料
- [快学Mongo]
- [Mongo问题讨论区]
- [Mongo 驱动使用手册]
- 本书使用 GitBook 发布
为mongo Shell编写脚本
为mongo Shell编写脚本
在本页面
[success] Note
下面的文档是MongoDB服务器下载.中包含的
mongo
shell。有关新的MongoDB Shell ,mongosh的信息,请参考mongosh文档。要了解这两种shell的区别,请参阅Comparison of the mongo Shell and mongosh.
您可以为mongo
shell编写JavaScript 的脚本,来处理MongoDB中的数据或执行管理操作。 本章节介绍了通过mongo
shell编写的JavaScript
的方法 来访问 Mongodb的方式。
打开新连接
在mongo
shell或JavaScript文件中,您可以使用Mongo()
构造函数实例化数据库连接:
Mongo()
new Mongo(<host>)
new Mongo(<host:port>)
请考虑以下示例,该示例实例化与在默认端口上的localhost上运行的MongoDB实例的新连接,并使getDB()
方法将全局db变量设置为myDatabase:
conn = new Mongo();
db = conn.getDB("myDatabase");
如果连接到已经开启了访问控制的MongoDB实例,则可以使用db.auth()
方法进行身份验证。
此外,您可以使用connect()
方法连接到MongoDB实例。 以下示例使用非默认端口27020连接到在localhost上运行的MongoDB实例,并设置全局db变量:
db = connect("localhost:27020/myDatabase");
另可参考:
交互式mongo与脚本mongo的区别
[success] Note
从4.2版开始,
mongo
shell提供了isInteractive()
方法,该方法返回一个布尔值,该值指示mongo
shell是在交互模式还是脚本模式下运行。
为mongo shell编写脚本时,请考虑以下事项:
要设置db全局变量,请使用
getDB()
方法或onnect()
方法。您可以将数据库引用分配给db以外的其他变量。mongo
shell中的写操作默认情况下使用{ w: 1 }的写入策略。 如果执行批量操作,请使用Bulk()
方法。 有关更多信息,请参见:Write Method Acknowledgements)。您不能在JavaScript文件中使用任何shell帮助程序(例如,使用
,show dbs等),因为它们不是有效的JavaScript。
下表将最常见的mongo shell助手映射到其JavaScript等效项:
Shell帮助 | 等价JavaScript |
---|---|
show dbs, show databases | db.adminCommand('listDatabases') |
use
| db = db.getSiblingDB(' ') |
show collections | db.getCollectionNames() |
show users | db.getUsers() |
show roles | db.getRoles({showBuiltinRoles: true}) |
show log
| db.adminCommand({ 'getLog' : ' ' }) |
show logs | db.adminCommand({ 'getLog' : '*' }) |
it | cursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); } |
在交互模式下, mongo
打印操作结果,包括所有游标的内容。 在脚本中,使用JavaScript print()函数或 mongo
特定的printjson()函数,该函数返回格式化的JSON。
例子:
要在mongo shell脚本中打印结果游标中的所有项目,请使用以下惯用法:
cursor = db.collection.find();
while ( cursor.hasNext() ) {
printjson( cursor.next() );
}
脚本编写
在系统提示下,使用mongo
评估JavaScript。
—eval选项
使用—eval选项 让Mongo来执行一个JavaScript片段,如下所示:
mongo test --eval "printjson(db.getCollectionNames())"
这将使用连接到在本地主机接口上的端口27017上运行的mongod
或mongos
实例的mongo
shell返回db.getCollectionNames()
的输出。
执行一个JavaScript文件
您可以在mongo shell中指定.js文件,然后mongo将直接执行JavaScript。 考虑以下示例:
mongo localhost:27017/test myjsfile.js
此操作在mongo shell中执行myjsfile.js
脚本,该脚本连接到可通过端口27017上的localhost接口访问的mongod实例上的测试数据库。或者,您可以使用Mongo()
构造函数在javascript文件中指定mongodb连接参数。
有关更多信息,请参见:打开新连接 。
您可以使用load()
函数从mongo shell中执行.js文件,如下所示:
load("myjstest.js")
此函数加载并执行myjstest.js文件。
load()方法接受相对路径和绝对路径。 如果mongo shell的当前工作目录为/ data / db,而myjstest.js位于/ data / db / scripts目录中,则mongo shell中的以下调用将是等效的:
load("scripts/myjstest.js")
load("/data/db/scripts/myjstest.js")
[success] Note
load()函数没有搜索路径。 如果所需的脚本不在当前工作目录或完整的指定路径中,则
mongo
将无法访问该文件。
译者:王恒
校对:杨帅
Copyright © 上海锦木信息技术有限公司 all right reserved,由 MongoDB汉化小组 提供技术支持文件修订时间: 2020-10-11 20:53:05