【问题标题】:How to update a field value globally in mongodb如何在mongodb中全局更新字段值
【发布时间】:2015-12-24 09:41:24
【问题描述】:

有没有更简单的方法来全局更新 mongodb 中的字段文本?

我没有 mongodb 知识,但有一些类似的东西,

更新“所有具有 field1 的集合”设置 field1=some where field1=1234

请看一下使用 db dumps 的 mysql 解决方案: 类似于Find and replace in entire mysql database

如果上述方法不可行,那么编写一次性脚本以在 mongodb 中迁移数据的最佳方法是什么?这是linux环境下的。

【问题讨论】:

  • 您想在集合的所有文档中将字段设置为相同的值还是更复杂?请准确描述您想要做什么。模糊的问题可能会给你模糊的答案。
  • 感谢您查看它,为了清晰起见,我进行了编辑。

标签: mongodb database-administration


【解决方案1】:

要更新同一集合中的多个文档,请在更新时使用multi:true 选项:

db.collection.update(
   { "field1": 1234 },
   { "$set": { "field1" : somevalue } },
   { multi: true }
);

MongoDB 没有一次影响多个集合的命令,因此您必须为每个集合分别执行此操作。当您想在 shell 中执行此操作时,您可以使用如下脚本分别对每个集合执行命令:

 db.getCollectionNames().forEach( function(name) {
      db[name].update(
             { "field1": 1234 },
             { "$set": { "field1" : somevalue } },
             { multi: true }
      );
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多