As you decoded the short one, you can see that besides the type, in only contains a timestamp - this is the last point in time that is safe to resume your change stream without losing events (highwatermark token). Imagine scenario when you’re watching a collection that has infrequent updates, if you store the _id from the last seen event as resumeToken and not get any new events for very long time, that event can roll off the oplog eventually (as writes on other collectins are happening). When you use ResumeToken() regularly, even if no event show up in the stream, it returns you a recent point in the oplog, so you can use that one when you need to resume stream without the risk of losing events and avoiding scanning lots of irrelevant oplog records.