Skip to main content

Minimal database Model management for MongoDB

Project description

Minimongo is a lightweight, Pythonic Object-Oriented interface to MongoDB.

It provides a very thin, and dynamicly typed object management layer for any data stored in any MongoDB collection, and usese the native pymongo query syntax.

Minimongo can easily layer on top of existing MongoDB collections, and will work properly with almost any existing schema, even from 3rd party applications.

Contact:

Steve Lacy <github@slacy.com>
Twitter: @sklacy
http://slacy.com/blog

For an introduction to all it’s features, please see the USAGE file.

Major features

  • No schema declaration

    Minimongo has no schema declaration. You do not pre-declare the names and types of your fields. Minimongo takes a minimalist and flexible approach to schemas. You can set any value on any Minimongo-derived object.

  • Declared database & collection names.

    Miminogo allows you to progromaticaly declare your database and collection names.

    You’ll only need to put your collection name in one place, and Minimongo provides classmethods for accessing the DB and Collection names programatically. This means you can easily switch DB or Collection names without having to change all your code.

  • Automatic MongoDB Connection mangagement and connection pooling.

    Minimongo automatically connects to your database for you, and has its own simple Connection pool. Connections are persistent and last the lifetime of your application.

  • Friendly support for DBRef types.

    Minimongo can easily generate fully-specified (DB name included) DBRef objects, and store these into fields. Fetching via DBRef is simplified as well.

  • Uses Pymongo_’s native query syntax.

    Query methods are passed directly to Pymongo’s API. Minimongo provides very few custom methods, and delegates nearly all operations directly to Pymongo. This means as features are added to Pymongo, they will be automatically accessible via Minimongo.

  • Easily extensible.

    Minimongo-derived objects can be easily extended to add new functionality.

  • Easy object creation via initalization from Dicts.

Example

Here’s a very brief example of creating an object, querying for it, modifying a field, and then saving it back again.:

from minimongo import Model, MongoCollection

class MyCollection(Model):
    mongo = MongoCollection(database='test', collection='minimongo.example')

if __name__ == '__main__':
    obj = MyCollection({'x': 1, 'y': 2}).save()

    res = MyCollection.find({'x': 1})
    res.other = 'some data'
    res.save()

TODOs & Upcoming features:

  • More template-friendly member accessing. Return None for missing fields?

  • Per-object configuration directives. Read-only, Rigid (no schema change allowed after read), etc.

  • Support for automatic DBRef field dereferencing.

  • Better support for SON and field ordering. Right now, most things are Python dict, which means that ordering is not defined.

  • Delta modification tracking so that when you call save(), it doesn’t send the whole document back to the server to modify one field.

  • Support for the mongodb atomic operations like $inc, $push, $pull, etc.

  • Better support for nested Model objects. (Right now, nested data must be of a native Python type, not of another Model).

  • Automatic Index creation at database connection time.

Feedback welcome!

Please email github@slacy.com with comments, suggestions, or comment via http://github.com/slacy/minimongo

Changes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

minimongo-0.1.1.linux-x86_64.tar.gz (10.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page