db.posts.update({}, {"pop_score":999});
db.posts.find({},{"pop_score":1});
{ "_id" : ObjectId("4d8eadd6df83500f3b000004"), "pop_score" : 0 }
{ "_id" : ObjectId("4d8eb1e3df83500f3b000035"), "pop_score" : 1 }
{ "_id" : ObjectId("4d8eb238df83500f3b000039"), "pop_score" : 1 }
{ "_id" : ObjectId("4d91377bdf8350063d000000"), "pop_score" : 1 }
{ "_id" : ObjectId("4d913c19df8350063d000001"), "pop_score" : 2 }
{ "_id" : ObjectId("4d8eacabdf83500f3b000000"), "pop_score" : 1 }
我将所有帖子的 pop_score 更新为 999。但是当我查询它们时,它没有更新。
最佳答案
它确实有效,但默认情况下只更新第一个匹配的文档。我怀疑你那里有一些文件,现在是 999。
您需要做的是通过将可选的 multi
标志设置为 true 来告诉 MongoDB 更新每个匹配的文档:
db.posts.update({}, {"pop_score":999}, false, true)
这将更新每个文档,而不仅仅是它找到的第一个文档。
您可能希望查看 docs on updating还有关于这些标志的更多信息。
关于mongodb - 为什么这个 MongoDB 更新不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5736882/