mongoose:更新不起作用
基本的想法是这样的:
model.find({}, function(err, docs) { docs.forEach(function(doc) { // update it with whatever new object model.update({"category":"cat1"}); }); });
现在我的问题是任何types的更新/保存不起作用。 我可以find,计数等模型。 我已经试过doc.save()
, model.findOneAndUpdate()
,使用特定字段的$set
参数,他们不工作。 我去了mongo shell并用参数键入update命令,它工作。
有一次,它的工作,是当我尝试从m.save()
的callback函数外部使用var m = new model({..})
和m.save()
来放置新文档。 但是我需要在他们的领域find文件,并更新这些文件。
我觉得我错过了一些很基本的东西,有人可以帮我吗?
编辑:mongoose.disconnect()稍后在代码中被调用。 所以查询没有执行。
造成这个问题的另一个可能性是当您使用混合types时,如在Schema.Types.Mixed
。 如果您只更新混合字段,那么Mongoose不知道您已经更新了该字段。 所以你需要调用markModified
我最近遇到了这个问题,要知道发生了什么,这是一件很痛苦的事情。
除非它只是一个错字,否则你正在对错误的对象进行更新。 你可能想要做的
(){doc.forEach(function(doc){doc.update({/ fields here /});});});
以上回答是不正确的。
编辑
想一想,为什么你find
了? 你应该可以更新你的docoments没有它。 检查API文档以进行更新
model.update({}, {field1: 'updated value'}, function(err) {});