--noscripting 不阻止脚本

--noscripting not preventing scripting

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

mongod --dbpath C:\MongoData --noscripting

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

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

我认为脚本是 运行 因为它是客户端? 如果是这样,什么决定脚本是客户端还是服务器端?如果不是,为什么脚本是运行?

这个...

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

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

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

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

所以,总而言之,--noscripting 禁用服务器端脚本,它对客户端脚本没有影响。服务器端脚本是那些在服务器上执行的脚本,上面列出的三个是主要示例。