我正在尝试使用Mongoose制作一个动态条件,但它并没有像我想象的那样工作。
代码就像这样
id = req.params.questionId;
index = req.params.index;
callback = function(err,value){
if(err){
res.send(err)
}else{
res.send(value)
}
};
conditions = {
"_id": id,
"array._id": filterId
};
updates = {
$push: {
"array.$.array2."+index+".answeredBy": userId
}
};
options = {
upsert: true
};
Model.update(conditions, updates, options, callback);
如你所见,我正试图使用" index"来制作动态条件。变量。有可能这样做吗?
提前谢谢!
答案 0 :(得分:6)
您需要分两步创建updates
对象:
var updates = { $push: {} };
updates.$push["array.$.array2." + index + ".answeredBy"] = userId;
<强>更新强>
现在node.js 4+支持computed property names,您可以一步完成:
var updates = { $push: {
["array.$.array2." + index + ".answeredBy"]: userId
} };