2015-09-09 2 views
3

Я хочу сделать мой mongoDB более безопасным. Я читал, что я могу начать с него - noscripting, чтобы отрицать JavaScript. Я пытался проверить, что это работает.Как я могу проверить, если скрипт отключен в моем MongoDB

Когда я начал DB как этот

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

, а затем я попытался использовать $ где-оператора, как описано здесь:

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 
} 

Является ли это ответ, я должен ожидать? Или это указывает на другой провал?

+0

Добро пожаловать в Stackexchange. Stackoverflow - это сообщество разработчиков программного обеспечения. Ваш вопрос, однако, касается администрации. Это означает, что он будет намного лучше на https://dba.stackexchange.com. Я выдвинул ваш вопрос о миграции. – Philipp

+0

ОК. Спасибо Филиппу. – SiSi

ответ

2

Это ожидаемое поведение, поскольку --noscriptingопция отключает скриптовый движок и весь оператор $where делает это оценка JavaScript, как упоминается в официальной документации;

Используйте оператор $ where, чтобы передать строку запроса, содержащую выражение JavaScript, или полную функцию JavaScript в систему запросов. $ Where обеспечивает большую гибкость, но требует, чтобы база данных обрабатывала выражение JavaScript или функцию для каждого документа в коллекции. Ссылка на документ в выражении или функции JavaScript, используя либо это, либо obj.

Также сообщение об ошибке довольно ясно.

... "$ эээ": "Не может канонизировать запрос: BADVALUE не globalScriptEngine в $ где разборе"

Обратите внимание на нет globalScriptEngine часть сообщения.

Смежные вопросы