2014-02-28 71 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