基本理念是这样的:
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并用参数键入了update命令,它运行了。
有一段时间它确实有效,当我尝试使用var m = new model({..})
和m.save()
来自find()
的回调函数之外放置新文档时。但是我需要按照他们的字段查找文档,并更新它们。
我觉得我错过了一些非常基本的东西,有人可以帮助我吗?
编辑:稍后在代码中调用mongoose.disconnect()。所以查询没有执行。
答案 0 :(得分:2)
导致此问题的另一种可能性是当您使用混合类型时,如Schema.Types.Mixed
中所示。如果您只更新混合字段,那么Mongoose不知道您已更新该字段。所以你需要致电markModified
我最近遇到了这个问题,发现发生的事情是痛苦的。
答案 1 :(得分:0)
除非它只是一个拼写错误,否则你正在对错误的对象进行更新。你可能想做
model.find({},function(err,docs){
docs.forEach(function(doc){
doc.update({/ fields here /});
});
});
德尔>
以上回答不正确。
修改强>
在仔细思考之后,你为什么要做find
?你应该能够在没有它的情况下更新你的装备。查看API docs for update
model.update({}, {field1: 'updated value'}, function(err) {});