我在MEAN堆栈中工作,而且我遇到了一个Mongoose问题。更新对于单个文档(单键:值)工作正常,但是当我尝试使用新对象更新嵌套对象时,它只是删除原始对象而不是插入新对象。
在终端内的mongo中直接使用相同的查询,效果很好。但是从我的Mongoose模型中,我得到了上述行为。
我最后想要的查询更复杂并且使用了很多变量,因此我将代码简化为以下内容以突出显示问题:
Setup.update({name: "main"}, {$set: {"schedule.sunday.eleven_pm": { associates: 111, supervisors: 111}}}, function(err){
if(err){
console.log(err);
}
else{
console.log('successfully updated main schedule setup')
Setup.find({}, function(err, setup){
if(err){
console.log(err);
}
else{
res.json(setup);
}
})
}
});
在我的数据库中给我这个:
"eleven_pm" : {
}
但是从终端,同样的查询(从我的mongoose查询剪切并粘贴,只是将'db.setups'添加到开头:
db.setups.update({name: "main"}, {$set: {"schedule.sunday.eleven_pm": { associates: 111, supervisors: 111}}})
给我这个,期望的结果:
"eleven_pm" : {
"associates" : 111,
"supervisors" : 111
}
我尝试将其写为findOneAndUpdate(),但遇到了相同的行为。我在这里做一些非正统的事吗?
非常感谢任何帮助。
答案 0 :(得分:0)
我的数据库结构中的一个小变化没有在我的Mongoose" Schema"中修改,两者之间的差异导致了上面解释的异常查询行为。