我正在试图确定变更:https://docs.mongodb.com/manual/changeStreams https://docs.mongodb.com/manual/reference/method/db.collection.watch/之间的区别。
看起来是这样的:
const changeStream = collection.watch();
changeStream.next(function(err, next) {
expect(err).to.equal(null);
client.close();
done();
});和一个可裁剪的光标:https://docs.mongodb.com/manual/core/tailable-cursors/
看起来是这样的:
const cursor = coll.find(self.query || query)
.addCursorFlag('tailable', true)
.addCursorFlag('awaitData', true) // true or false?
.addCursorFlag('noCursorTimeout', true)
.addCursorFlag('oplogReplay', true)
.setCursorOption('numberOfRetries', Number.MAX_VALUE)
.setCursorOption('tailableRetryInterval', 200);
const strm = cursor.stream(); // Node.js transform stream他们有不同的用例吗?什么时候用一个比另一个好呢?
发布于 2018-03-18 11:03:29
变更流 (在MongoDB v3.6+中提供)是一项功能,允许您访问实时数据更改,而不需要跟踪oplog的复杂性和风险。改变流在尾随oplog上的主要好处是:
_id of 变更事件输出是一个简历标记。MongoDB官方驱动程序自动缓存此简历令牌,在发生网络瞬态错误时,驱动程序将重试一次。此外,应用程序还可以通过使用参数resume_after手动恢复。另见恢复更改流。什么时候用一个比另一个好呢?
如果您的MongoDB部署是版本3.6+,我建议使用MongoDB更改流,而不是跟踪oplog。
您可能还会发现更改流生产建议是一个有用的资源。
发布于 2018-03-18 06:33:44
使用可裁剪的游标,可以跟踪对所有集合的所有更改。使用changeStream,您只会看到对所选集合的更改。更少的流量和更可靠的。
https://stackoverflow.com/questions/49343303
复制相似问题