2015-12-22 2 views
0

Я пытаюсь обновить документ в коллекции с помощью обновления и $ set.

Я пытаюсь установить «купленное» логическое значение true/false, в зависимости от пользовательского ввода.

если я делаю {$set : {'lists.$.items.<items position>.purchased' : bought}}, считая, что купил логический, он отлично обновляется. Однако, если я попытаюсь сделать

var updateString = 'lists.$.items.' + itemPosition + '.purchased'; 
{$set : { updateString : bought}}; 

он всегда обновляет 0 документов. Я пробовал несколько вариантов, таких как var updateString = '"lists.$.items.' + itemPosition + '.purchased"';

Если i console.log(updateString) и вставьте результат в набор $ set, он отлично работает.

Я должен иметь возможность динамически создавать эти параметры обновления, и я не могу на всю жизнь понять, почему это не будет сделано.

ответ

0

Я не был очень умным об этом, как выясняется.

Больше я пытался использовать updateString в качестве ключа, который не срабатывал.

Как я удосужился это сделать:

var updateString = 'lists.$.items.' + itemPosition + '.purchased'; 
var query = {'$set' : {}}; 
query['$set'][updateString] = purchased; 

А потом просто передать в запросе в качестве второго параметра при вызове обновления Mongoose.

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