我有以下更新查询:
var where = 'answers.round_' + ans.round + '_' + ans.iteration
Game.findByIdAndUpdate(gameId, {
$addToSet: {
where: ans
}
}, function(err, model) {
if (err)
throw err
console.log('after game update with answer ' + JSON.stringify(model))
callback()
})
,数据库结构如下所示:
"_id: ObjectId("5304bc1dcf36941e3adcd3fd"),
"answers" : {
"round_1_1" : [],
...
}
问题是ans对象没有被推入"round_1_1"
数组(不是我检查它不是null
)。回调中的模型是我想要更新的模型,只是更新不会发生。
我的问题类似于this,就像点符号不起作用(即使在控制台上输出answers.round_1_1
。
答案 0 :(得分:1)
您正在努力将其推入不存在的where
数组中。因为模型中没有这样的字段,所以Monggose newer将它发送到MongoDB。
问题在于您如何构建查询。请尝试以下代码:
var query = {$addToSet: {}}
, where = 'answers.round_' + ans.round + '_' + ans.iteration;
query.$addToSet[where] = ans;
Game.findByIdAndUpdate(gameId, query, function(err, model) {
// Your callback function
})