If the object contains a field called "id", motor engine should not interpret the mongodb field "_id" as a dynamic field. This overrides the "id" field from the object itself in some cases. To be specific if the dictionary of fields from bson converted to a dict contains the objects id field before the "_id" field from mongodb. In that case the mapping is wrong and motor engine overrides the id value from the object with the _id value from mongodb.
Also newer versions of motor return a cursor for aggregations.
If the object contains a field called "id", motor engine should not interpret the mongodb field "_id" as a dynamic field. This overrides the "id" field from the object itself in some cases. To be specific if the dictionary of fields from bson converted to a dict contains the objects id field before the "_id" field from mongodb. In that case the mapping is wrong and motor engine overrides the id value from the object with the _id value from mongodb. Also newer versions of motor return a cursor for aggregations.