Tracking changes in Documents - what are the actual changes?

With Couchbase Lite 2.0.0 for .net (currently db019) getting notified whenever the database changes is quite simple using the Eventhandler in Couchbase.Lite.Database:
public event EventHandler<DatabaseChangedEventArgs> Changed;
I can also find out what documents where changed using the DatabaseChangedEventArgs. So far so good.

But how do I go about finding out what changes took place in those documents?
Maybe I am missing something very simple here, but I haven’t found a way to get this information from the documents?

I understand that revisions are solely meant to help in conflict resolution and not for providing information about previous versions of a document. So I take it, that it is by design that there doesn’t seem to be any way to access past revisions on the client side, correct?

And, if Couchbase does not provide a mechanism to access past versions of a document, are there any best practices out there on how to approach the subject in a Couchbase-kind-of-way?

Just thought I check back with you all before writing my own solution …
Any information, any clarification, any thoughts are appreciated. Thanks!

Whenever one changes a document the complete document syncs to sync gateway and reaches to other clients.

As stated by you database change listener can help which documents have been changed. But right now there is no way to find out what in that document have changed.

There is only one point where one can check and thats the sync gateway. The sync function got old doc and new doc as parameter.

May be one can create a sync function on sync gateway and compare the new doc with old doc and set an array in the document about which keys are having the difference. But how practically it is possible is not known to me.

But as far as I know right now there is no in-built way to find it out.

The CBL 2 public API doesn’t provide access to past revisions. Internally it does store past revisions for a limited time, mostly for handling conflicts. CBL 1.x had APIs to access this but it added to API complexity and wasn’t usually necessary.

Could you describe specifically what you need to do, i.e. why you need to find exactly which properties changed?