我尝试通过使用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中,则效果非常好。
我需要能够动态地构建这些更新参数,而且我不能为我的生活找出为什么不会这样做。
答案 0 :(得分:0)
我试图将updateString用作失败的密钥。
我解决这个问题的方法是:
var updateString = 'lists.$.items.' + itemPosition + '.purchased';
var query = {'$set' : {}};
query['$set'][updateString] = purchased;
然后简单地将查询作为第二个参数传递给Mongoose更新调用。