【问题标题】:Mongodb multi update, only updates a single document in mongo-shellMongodb 多更新,只更新 mongo-shell 中的单个文档
【发布时间】:2015-05-27 10:59:50
【问题描述】:

我正在学习 mongodb,并尝试使用 {$multi: true} 选项执行简单的多文档更新,但它只更新单个文档。

> db.users.update({'color': 'black'}, {$set: {'title': 'blackers'}}, {$multi: true});

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.users.find({'color': 'black'});

{ "_id" : ObjectId("5562312f061fa19e6cebc7e4"), "color" : "black", "hobby" : [ "dancing", "breaking", "drawing", "praying", "smiling" ], "name" : "john", "schools" : [ "mlimwa", "martin", "ignatus", "eget", "jubilee", "canon" ], "title" : "blackers" }

{ "_id" : ObjectId("5564057bb0f557f0c0589e66"), "color" : [ "black" ], "name" : "demo" }

{ "_id" : ObjectId("556424fc1dd78ab02dd2918f"), "color" : "black", "name" : "tola" }

>db.version()
3.0.3

请帮助我真的卡住了..

【问题讨论】:

  • 问题是您的文档仅包含一个包含 title 字段并具有值 blackers 的文档,如果您更改了 blackers to blackers1,您的更新查询会更新相同的字段值它只更新一个文档,如果你想设置标题写为update({'color': 'black'}, {$set: {'title': 'blackers122'}},true,true)

标签: mongodb mongo-shell


【解决方案1】:

不是$multi,只写{multi:true}

db.users.update({'color': 'black'}, {$set: {'title': 'blackers'}}, {multi: true});

请参阅此处的文档以获取有关 upsert 或 writeconcern 参数的更多帮助 http://docs.mongodb.org/manual/reference/method/db.collection.update/

【讨论】:

  • hhaha .. 非常感谢,我在 upsert 和 multi 中遇到了这个错误,几个小时都无法转动我的眼睛。干杯..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
相关资源
最近更新 更多