1

基本思想是这样的:

model.find({}, function(err, docs) {
    docs.forEach(function(doc) {
        // update it with whatever new object
        model.update({"category":"cat1"});
    });
});

现在我的问题是任何形式的更新/保存都不起作用。我可以使用模型查找、计数等。我试过doc.save(), model.findOneAndUpdate(),使用$set特定字段的参数,它们不起作用。我去了 mongo shell 并使用参数输入了更新命令,它起作用了。

var m = new model({..})有一次它确实有效,是当我尝试m.save()使用find(). 但我需要按字段查找文档并更新它们。

我觉得我错过了一些非常基本的东西,有人可以帮我吗?

编辑:mongoose.disconnect() 稍后在代码中被调用。所以查询没有执行。

4

2 回答 2

2

此问题的另一个可能原因是当您使用混合类型时,如Schema.Types.Mixed. 如果您只更新 Mixed 字段,则 Mongoose 不知道您已更新该字段。所以你需要打电话markModified

我最近遇到了这个问题,想知道发生了什么让我很头疼。

于 2014-05-29T22:55:25.540 回答
0

除非它只是一个错字,否则您正在对错误的对象进行更新。你可能想做

model.find({}, function(err, docs) { docs.forEach(function(doc) { doc.update({/ fields here /}); }); });

上面的答案是不正确的。

编辑

稍微想了想,你到底为什么要这么做find?没有它,您应该能够更新您的文档。检查API 文档以获取更新

model.update({}, {field1: 'updated value'}, function(err) {});
于 2013-04-01T18:51:03.700 回答