Mongodb --noscripting不阻止脚本

Mongodb --noscripting不阻止脚本,mongodb,mongodb-shell,Mongodb,Mongodb Shell,我已经用--noscripting选项启动了我的MongoDB服务器: mongod--dbpath C:\MongoData--noscripting 但是,我仍然可以加载JavaScript文件并在其中执行代码: >加载('/Users/d.banks/Documents/mongo-rocks/hello-world.js') 真的 >你好(‘戴夫’) 你好,戴夫! 我假设脚本正在运行,因为它是客户端的? 如果是这种情况,如何确定脚本是客户端还是服务器端?如果没有,为什么脚本正在运行?

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

mongod--dbpath C:\MongoData--noscripting
但是,我仍然可以加载JavaScript文件并在其中执行代码:

>加载('/Users/d.banks/Documents/mongo-rocks/hello-world.js')
真的
>你好(‘戴夫’)
你好,戴夫!
我假设脚本正在运行,因为它是客户端的? 如果是这种情况,如何确定脚本是客户端还是服务器端?如果没有,为什么脚本正在运行?

load('/Users/d.banks/Documents/mongo-rocks/hello-world.js')
。。。是客户端脚本的一个示例。它是客户端的,因为它在客户端运行

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

  • :其中,
    $是服务器端执行的JavaScript表达式或函数
  • $reduce
    $keyf
    finalize
    参数是服务器端执行的Javascript函数
  • :map和reduce参数是服务器端执行的Javascript函数

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

是在客户端运行,还是在客户端运行?思维刚刚爆发。然而,是脚本使用的方法决定了它在哪里执行?没有办法强制脚本在服务器上运行吗?任何Javascript表达式或函数都没有内在的客户端(或服务器端)。客户端(或服务器)是其运行位置的一个方面。因此,当您将JS文件加载到客户端时(如您在问题中所示),这是在服务器端运行的,但当您将Javascript函数传递到服务器时(使用$where、$group或$mapreduce时可以这样做),则您要求服务器代表您运行该文件,即服务器端Javascript。对此,请回答:“是否无法强制脚本在服务器上运行?”…为了让服务器运行脚本,您需要某种方式将脚本传递到服务器和$where/$group/$mapreduce所有允许您将JS传递到服务器的公开参数。一旦传递到服务器,此JS将在服务器上执行。但是,这:
load('/Users/d.banks/Documents/mongo-rocks/hello-world.js');
不会传递到服务器,它只会在客户端调用。