0

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

mongod --dbpath C:\MongoData --noscripting

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

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

我假设脚本正在运行,因为它是客户端?如果是这种情况,什么决定脚本是客户端还是服务器端?如果不是,为什么脚本在运行?

4

1 回答 1

1

这个 ...

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

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

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

  • $where:$where是在服务器端执行的 JavaScript 表达式或函数
  • $group:$reduce和参数是在服务器端执行的Javascript$keyf函数finalize
  • $mapreduce: mapandreduce参数是在服务器端执行的 Javascript 函数

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

于 2018-01-16T16:06:10.440 回答