我有一个从命令行运行的复杂 MongoDB 脚本的组合,如下所示:
$ mongo mydb config.js task.js
由于我无法在我的服务器环境中运行 shell 脚本并且需要安排上述任务,我想我可以简单地连接上述 .js 文件,然后从 Node 脚本运行它们。因此,我正在寻找一个等价于:
db.runMyCustomRawCommands(string commands)
我该怎么做,或者什么是替代解决方案?
引用 Node.js 原生 MongoDB 驱动程序的原作者 Christian Kvalheim 的话:
这是不可能的,因为 shell 是同步的,并且具有与 node.js 驱动程序不同的 api。您必须重写脚本才能为 node.js 工作。
问题是这db.runMyCustomRawCommands
不是原始命令。驱动程序与较低级别的 mongod 服务器通信。诸如db.abc
您在控制台中运行的命令实际上是引用db.$cmd
集合的简单查询消息db.$cmd.findOne({ abc: 1 })
。
因此,您必须弄清楚如何将 mongo shell 脚本表达为对驱动程序 API 的调用,或者在较低级别访问服务器。