这是我的架构:
var Account = new Schema({
username: String,
likes: Schema.Types.Mixed
})
我将&some 39?属性添加到喜欢中。一切正常。
var conditions = {'_id':req.body.id};
var update = {'$set':{'likes.someProperty': req.body.something}};
var callback = function (err, data) {
if (err) return next(err);
};
users.update(conditions, update, callback);
更新我的文档后:
'username': Fat Gandalf,
'likes': {
someProperty: '100'
}
我的问题是,我不知道某些属性的名称'。我需要以某种方式动态创建它:
var temp = 'likes.' + req.body.propertyName; // -- > 'likes.anything'
var update = {'$set':{temp: req.body.something}};
以上示例不起作用。他妈的!需要你的帮助!
答案 0 :(得分:1)
使用 square bracket notation 构建字段对象,如下所示:
var conditions = { "_id": req.body.id },
update = { "$set": {} };
update["$set"]["likes."+req.body.propertyName] = req.body.something;
Users.update(conditions, update, callback);
或使用computed property names (ES6):
var conditions = { "_id": req.body.id },
update = {
"$set": {
["likes."+req.body.propertyName]: req.body.something
}
};
Users.update(conditions, update, callback);