通过Node.js驱动程序运行任意MongoDB脚本

时间:2012-10-25 17:26:56

标签: node.js mongodb

我有一组复杂的MongoDB脚本,它们从命令行运行,如下所示:

$ mongo mydb config.js task.js

由于我无法在我的服务器环境中运行shell脚本并需要安排上述任务,我想我可以简单地连接上面的.js文件,然后从Node脚本运行它们。因此,我正在寻找一个等于:

db.runMyCustomRawCommands(string commands)

我该怎么做,或者什么是替代解决方案?

2 个答案:

答案 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的调用或访问较低级别的服务器。