The problem with this approach is that it is extremely low level. It will be excruciatingly annoying to restore this information to the point where it makes sense from an application point of view.
For example, let's say you change the username. Are you using or are $setyou replacing a custom object? From the point of view of the application, this does not matter, but the oplog will look completely different. In addition, if you use a replacement, the information contained in oplog will not contain only changes, but only a new state. This means that the only way to understand what is actually happening is to do a full repetition of all operations (so that you have an old and new state).
, oplog , , , .
-, . , Unit of Work, , , ( ) . , , .