mongoose返回模型不能更新

我对Mongoose / Mongo和node.js很新,所以我怀疑这只是我的一个误解,但是…

下面的代码示例是最小的失败示例,而不是我的用例。

var User = app.db.model('User'); User.find({email: 'm8@test.com'}, function (err, models) { models[0].update(function(err, mod) { console.log(err.message) }); }); 

这会导致以下错误: 将更新应用到文档{_id:ObjectId('54647402cb955748153ea782'),…}后,发现(不可变)字段'_id'已被更改为_id:ObjectId('546d9e0e539ed9ec102348f9 “)

为什么发生这种情况? 我会认为调用从最初的发现返回的模型更新会很好。

请注意:在我的用例中,发现和更新之间发生了一些事情。 具体来说,我正在做类似于:

 model.property.push(objectId) 

然后我想通过更新提交。

我相信这是一个直截了当的问题,但是我不能在文档中的任何地方看到我可能会犯的错误。

所有帮助赞赏。

更新:

我真正需要做的是:

 var User = app.db.model('User'); User.find({email: 'm8@test.com'}, function (err, models) { models[0].save(function(err, mod) { console.log(err.message) }); }); 

使用“保存”而不是“更新”

我不知道我是否明白

查找和更新(例如使用快递)

 var email = req.params.email; User.find({email:email}, req.body, function(err,user){ if(err){ throw err; } //you do stuff like this var obj = { password:'new pass', username:'username' } //use save if you want validate User.update(user[0],obj,function(err, mod) { console.log(err) }); }); 

只有更新:(例如使用快递)

 User.update({email:email}, req.body, {}, function(err,user){ if(err){ throw err; } res.send(200, { message : 'User updated ' + user }); }); 

请记住:

模型是架构的编译版本。

我希望这可以帮助你