我正在开发一个使用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 })
我的问题是:是否可以$set
在 MongoDB 中强制进行更新,nModified
以使上述输出中的值959
不实际修改任何字段?
注意:我们使用 WiredTiger 作为后端,因此我们touch
无法使用 mongo 命令。
谢谢您的帮助!