Mongodb集合复制和读取光标。

问题描述 投票:0回答:1

我想把一个集合从mongodb复制到其他数据汇中。一种方法是获取最后一个oplog条目时间戳,记录下来,然后对整个集合进行查找,并在该光标上迭代,将文档发送到sink。一旦该游标用完,我就读取从一开始得到的时间戳开始的oplog操作。(类似于什么 联网器 does)的伪代码。

lastTs = getLatestOplogTimestamp(); -> t1
doDumpOfCollection(collectionName);
streamOperationsFromOlog(since=lastTs); - t2

假设在t1和t2之间的这段时间里 collectionName有一些更新 比如说一个项目被添加到了一个子文档数组中 或者其他一些有状态的更新。

document1.items.append(item1);

问题是:在t1和t2之间的时间里,对collectionName进行了更新,比如说在子文档数组中增加了一个项目,或者其他一些有状态的更新。

  1. 新的数据能否在游标迭代中显示出来?

  2. 当我重放 oplog 时会发生什么 - 我可以在数组中出现重复的项目。

列表中的 文件 表明其他操作可以与查询 "交错",这表明这两项的答案是肯定的。

如果是这样,有没有一种方法可以可靠地从mongo复制一个单一的集合?在我看来,像Mongo Connector这样的东西并不能做到数据的强完整性。

mongodb replication isolation-level
1个回答
1
投票

我相信 快照改为 是为了满足您的要求。

© www.soinside.com 2019 - 2024. All rights reserved.