构建一个字符串以作为$ set参数传递

时间:2015-12-22 00:27:30

标签: mongoose

我尝试通过使用update和$ set来更新集合中的文档。

我试图设置购买的' boolean为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"';

如果我console.log(updateString),并将输出粘贴到$ set中,则效果非常好。

我需要能够动态地构建这些更新参数,而且我不能为我的生活找出为什么不会这样做。

1 个答案:

答案 0 :(得分:0)

事实证明,我对此并不是很聪明。

我试图将updateString用作失败的密钥。

我解决这个问题的方法是:

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

然后简单地将查询作为第二个参数传递给Mongoose更新调用。