我想读取数据库中集合的更改。现在我在直接使用 oplog 和Change Streams之间进行选择。我对 oplog Change Streams 能力几乎没有疑问
- 如何使用 Change Streams 从 oplog 一开始就开始读取更改?
使用 oplog 我可以find()
在具有零时间戳的 oplog 集合上使用,但使用 Change Streams 我只能传递resumeAfter
和startAfter
令牌。当我没有指定光标选项时,它会从当前时刻开始读取更改,但在第一次运行时,我需要从头开始。
- 如果我的更改阅读器会落后于 oplog 并
resumeAfter
变得过时怎么办?
从文档:
如果时间戳是过去的,oplog 必须有足够的历史来定位与令牌或时间戳关联的操作。
如何正确处理这种情况?
- 现在我需要从单个集合中读取更改,但将来我可能需要从多个集合中读取更改
使用 oplog,我可以扩展查找过滤器并继续使用状态中的时间戳。我可以对 Change Streams 做同样的事情吗?