【问题标题】:MongoDB Force UpdateMongoDB 强制更新
【发布时间】:2019-02-09 17:02:14
【问题描述】:

我正在开发一个使用 Debezium 将更改从 MongoDB 流式传输到 Kafka 集群的应用程序。 tl;dr - debezium 跟踪 mongo oplog 以更改文档并将整个 doc 存储在 kafka 上作为 json。

我们有一堆旧的、陈旧的生产数据,我们仍然希望按原样保留在 Kafka 上。为了让 Debezium 提取文档,它们首先必须出现在 OpLog 中。本质上,我们需要 touch 生产 mongo replset 中的每个文档,而不更改文档上的任何数据。我最初的想法是用当前内容更新一个字段:

db.contributors.update(
  {},
  {
    $set: {
      "meta.collectionName": "contributors"
    }
  },
  { multi: true}
)

但是,mongo 将其视为 noop: WriteResult({ "nMatched" : 959, "nUpserted" : 0, "nModified" : 0 })

我的问题是:是否可以在 MongoDB 中强制进行 $set 更新,以使上述输出中 nModified 的值是 959 实际上没有修改任何字段?

注意:我们使用 WiredTiger 作为后端,因此我们无法使用 mongo touch 命令。

感谢您的帮助!

【问题讨论】:

    标签: mongodb debezium


    【解决方案1】:

    Debezium MongoDB 连接器将对捕获的集合执行initial sync。因此,无需“触摸”所有文档即可将它们流式传输到 Kafka。只有在创建了该快照后,连接器才会切换到 oplog 拖尾,以便从那里捕获所有更改。

    【讨论】:

      猜你喜欢
      • 2014-01-09
      • 2019-10-26
      • 2018-12-26
      • 2018-05-08
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多