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