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) {});