- 无法阻止脚本编写

时间:2018-01-16 15:43:21

标签: mongodb mongodb-shell

我使用--noscripting选项启动了我的MongoDB服务器:

mongod --dbpath C:\MongoData --noscripting

但是,我仍然可以加载JavaScript文件并在其中执行代码:

> load('/Users/d.banks/Documents/mongo-rocks/hello-world.js')
true
> Hello('Dave')
Hello Dave!

我认为脚本正在运行,因为它是客户端的? 如果是这种情况,那么什么决定了脚本是客户端还是服务器端?如果没有,为什么脚本会运行?

1 个答案:

答案 0 :(得分:1)

这......

load('/Users/d.banks/Documents/mongo-rocks/hello-world.js')

...是客户端脚本的一个示例。它是客户端的,因为它在客户端运行。

启动选项--noscripting禁用服务器端脚本,即在服务器上运行的Javascript。这方面的例子包括

  • $where$where是一个JavaScript表达式或函数,在服务器端执行
  • $group$reduce$keyffinalize参数是服务器端执行的Javascript函数
  • $mapreducemapreduce参数是服务器端执行的Javascript函数

因此,总结--noscripting禁用服务器端脚本,它对客户端脚本没有影响。服务器端脚本是那些在服务器上执行的脚本,上面列出的三个是主要的例子。