Mongoose更新不使用嵌入对象

时间:2015-06-28 18:01:12

标签: node.js mongodb mongoose database

我在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(),但遇到了相同的行为。我在这里做一些非正统的事吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我的数据库结构中的一个小变化没有在我的Mongoose" Schema"中修改,两者之间的差异导致了上面解释的异常查询行为。