actual loading moved to load_if_needed()
Mongo_Document::is_new()
Mongo_Document::get_field_reference(), and static helpers get_named_reference() unset_named_reference()

Allow to access direct references to subdocuments using dot notation
get() and get_raw() for getting values using dot notation. __isset() also allows for dot notation checking
Most of mongo field functions like inc, push, pull etc. can be emulated, so you don’t have to reload the document to see the changed values. Actual document processing is of course still done on the server.

You can enable it by default by setting $_emulate to true, or using set_emulation(true)
emulation test
KWeb_Document implements ArrayAccess. It allows for dot notation fetching, and always uses emulation for setting.
Mongo_Subdocument allows to create simple models for subdocuments
Merge pull request #43 from panrafal/feature-subdocument

Merging emulation, array access and subdocuments