Currently heads can only be found in O(n) since every version has to be iterated over in order to find all heads.
Add a _m3._head : < bool > attribute and with each update toggle the parent to false.
This will also open the way to rollover old versions and get rid of the constraint to keep all versions of all times in the capped collection.