如果我的MongoDB中禁用了脚本,我该如何测试

时间:2015-09-09 06:08:59

标签: mongodb

我想让我的mongoDB更安全。我读过,我可以用--noscripting来拒绝JavaScript。我试图验证,这是有效的。

当我像这样启动数据库时

mongod --dbpath /var/lib/mongodb --noscripting --fork --logpath /var/log/mongodb/mongod.log

然后我尝试使用$ where-Operator,如下所述:

http://docs.mongodb.org/manual/reference/operator/query/where/

例如:

  

db.myCollection.find({$ where:“_ id == 1”})

它正在回归:

Error: error: {
    "$err" : "Can't canonicalize query: BadValue no globalScriptEngine in $where parsing",
    "code" : 17287
}

我应该期待这个答案吗?还是指向另一次失败?

1 个答案:

答案 0 :(得分:3)

这是预期的行为,因为--noscripting选项禁用了脚本引擎,所有$where运算符都是JavaScript评估,如官方文档中所述;

  

使用$ where运算符将包含JavaScript表达式或完整JavaScript函数的字符串传递给查询系统。 $ where提供了更大的灵活性,但要求数据库处理集合中每个文档的JavaScript表达式或函数。使用this或obj。

在JavaScript表达式或函数中引用该文档

此外,错误信息非常清楚。

  

...“$ err”:“无法规范化查询:BadValue在$解析中没有globalScriptEngine”

请注意消息的 no globalScriptEngine 部分。