MongoDB backend: switch to MongoEngine?
Currently we use the default PyMongo which is a moderately low-level library.
- MongoBongo (code) which is arguably too simplistic: it a) defines models as property-agnostic objects bound to collections (that's irrelevant for us as PyModels' greatest feature is natural identification within a single collection, so we interpret collections as distinct storages), and b) leaves intact the PyMongo's major wart, the query syntax;
- MongoKit (docs, code) which is really interesting but incompatible with PyModels as it best deals with nested JSON schemata, not plain documents;
- Ming (docs) which is in some crazy way close to our API, provides MongoDB-specific validation tools (a bit like MongoKit but the latter does that in a more elegant way) and even migration tools, but leaves the above-mentioned wart intact;
- MongoEngine (docs, code) which somewhat duplicates our model API and provides a decent query API; I think we could reuse/wrap some of its functionality to provide a solid backend-independent API without hiding away the backend-specific implementation of properties and queries.