2014-05-10 63 views
0

我想用Mongoose做一個動態條件,但它不能像我想象的那樣工作。用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); 

正如你看到的,我想用「指數」變化,使動態條件。有沒有可能這樣做?

預先感謝您!

回答

4

您需要在兩個步驟創建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 
} }; 
+0

或與Object.create –

+0

你救了我的命。謝謝! – masanorinyo