使用Mongoose进行动态查询

时间:2014-05-10 14:18:55

标签: javascript node.js mongodb mongoose database

我正在尝试使用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"来制作动态条件。变量。有可能这样做吗?

提前谢谢!

1 个答案:

答案 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
} };