Updates need to use mutable in a few ways that are not fully implemented yet.
Here's what we're pending on:
+ Support for lazy reading: portion of the underlying bson would be "parsed" and parts would be "opaque"
+ Support for copying serialized portions in bulk: generating a new bson objs out of a mutated one should require re-encoding the entire object. Portion of the original object may be memcpy-ed to the destination object.
+ Support in-placeness: mutable can be "locked" for only in place ops and would generate a "damage vector" with write intent information.
+ Support for algs: find is already in place, sort is needed (e.g. in $push)
+ General clean up, since quite a few notions are being introduced.