First, I am not an expert,
but I am dealing with the same dilemma,
I think that your assumption is probably right that eventually every update will end up with another read after oplog cursor iteration.
but lets keep in our minds:
- That it’s an _id index read which is the most efficient for retrieving full document.
- What is the alternative? it has not being found yet (from what I know) the technology that knows how to
mirror any database change without any performance implications. - maybe other alternative is that you iterate the oplog cursor and aggregate a batch of _id that have being updated in small and defined period of time and make a bigger query from secondary node which could be preferable from operational point of view
Note: This Thread is very important in my opinion I hope others how could help will reply here