Как заставить Монго правильно запустить мой скрипт JavaScript - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь обновить свой документ под названием «вещи», выполняющий скрипт javascript из оболочки mongo. Когда я явно говорю, какое поле обновлять, оно работает как чудо, но у меня возникают проблемы при попытке прочитать имя поля из массива.

Это мой код:


var continuousWithMissingValues = ["A2","A14"];
var categoricWithMissingValues = ["A1", "A4", "A5", "A6", "A7"];

for (var i = 0; i < continuousWithMissingValues.length; i++){

// db.things.update({A2: "?" },{$set: {A2: -1 }},  { multi : true }); this line is working properly
db.things.update({continuousWithMissingValues[i]: "?" },{$set: {continuousWithMissingValues[i]: -1 }}); //if I try to update while reading values from the array I'm getting error

print('Updated missing values for'+ continuousWithMissingValues[i]);
}


Я также безуспешно пытался использовать эту строку (это не приводит к ошибке, но ничего не обновляет):


db.things.update({"continuousWithMissingValues.i": "?" },{$set: {"continuousWithMissingValues.i": -1 }});

1 Ответ

0 голосов
/ 23 января 2019

Оболочка mongo не поддерживает имена вычисляемых свойств , поэтому вы должны создать запрос и обновить объекты в несколько шагов:

var query = {};
query[continuousWithMissingValues[i]] = "?";
var update = {$set: {}};
update.$set[continuousWithMissingValues[i]] = -1;
db.things.update(query, update);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...