我使用--noscripting
选项启动了我的MongoDB服务器:
mongod --dbpath C:\MongoData --noscripting
但是,我仍然可以加载JavaScript文件并在其中执行代码:
> load('/Users/d.banks/Documents/mongo-rocks/hello-world.js')
true
> Hello('Dave')
Hello Dave!
我认为脚本正在运行,因为它是客户端的? 如果是这种情况,那么什么决定了脚本是客户端还是服务器端?如果没有,为什么脚本会运行?
答案 0 :(得分:1)
这......
load('/Users/d.banks/Documents/mongo-rocks/hello-world.js')
...是客户端脚本的一个示例。它是客户端的,因为它在客户端运行。
启动选项--noscripting
禁用服务器端脚本,即在服务器上运行的Javascript。这方面的例子包括
$where
:$where
是一个JavaScript表达式或函数,在服务器端执行$group
:$reduce
,$keyf
和finalize
参数是服务器端执行的Javascript函数$mapreduce
:map
和reduce
参数是服务器端执行的Javascript函数因此,总结--noscripting
禁用服务器端脚本,它对客户端脚本没有影响。服务器端脚本是那些在服务器上执行的脚本,上面列出的三个是主要的例子。