2014-02-28 94 views
1

我使用expressjs,MongoDB的和貓鼬,我試圖更新以下模式的計數對象:貓鼬模式,設置關鍵變量

var UsersSchema = new Schema({ 
    username: { type: String, required: true }, 
    counts: { 
    followers: { type: Number, default: 0 }, 
    trips: { type: Number, default: 0 }, 
    videos: { type: Number, default: 0 } 
    } 
}) 

,並且更新部分(不工作):

var key = 'trips' // set dynamically, could be 'videos' or 'followers' 
Users.update({'username': username}, {$set: {'counts.key': 12}}, callback) 

工作的例子,但不是動態:

Users.update({'username': username}, {$set: {'counts.trips': 12}}, callback) 

任何想法?

+1

可能重複[如何使用可變貓鼬查詢?](http://stackoverflow.com/questions/21592595/how-to-use-variable-mongoose-query) – JohnnyHK

+0

是的,謝謝!這是我正在尋找的。我想知道是否有其他方法可以做到這一點。 – inwpitrust

回答

2

您可以爲$ set創建動態變量並在查詢中使用。

var key = 'trips'; 
var dynSet = {$set: {}}; 
dynSet.$set["counts." + key] = 12; 
Users.update({'username': username}, dynSet, callback) 
+0

這個解決方案似乎不起作用,但它看起來更清潔。 – inwpitrust

+0

讓我檢查一分鐘。 – Sumeet

+0

你得到了什麼錯誤? – Sumeet