【发布时间】:2015-01-19 07:10:21
【问题描述】:
我对 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)
});
});
使用“保存”而不是“更新”
【问题讨论】:
-
_id 是不可变的,你不能更新 _id。您也尝试更新 _id
-
我如何尝试更新_id?在基本的失败示例中,我没有改变我能看到的东西......在下一个注释中,我再次向模型上的数组添加值,而不是 _id。