MongoDB, Python

PyMongoLab: Cliente Python para el REST API de MongoLab

Hace casi un par de semanas, en un tiempo en el que leí acerca del driver oficial de Python para MongoDB; vi que era posible hacer un módulo que tenga una sintaxis muy parecida a este driver y que consuma los métodos expuestos por el REST API de MongoLab: http://support.mongolab.com/entries/20433053-rest-api-for-mongodb.

Bien, el resultado fueron 2 pequeños módulos en el que el primero utiliza urllib2 para acceder al REST API y el segundo que es wrapper del primero para utilizar la sintaxis que deseaba; este proyecto lo alojé en GitHub y la documentación -en inglés- se encuentra en la siguiente dirección:

Aquí unos ejemplos de uso:

Conexión a REST API

>>> from pymongolab import Connection, database, collection
>>> con = Connection("MongoLabAPIKey")
>>> db = database.Database(con, "database")
>>> collection.Collection(db, "collection")
Collection(Database(Connection('MongoLabAPIKey', 'v1'),
'database'), 'collection')

Consulta de documentos

>>> from pymongolab import Connection
>>> con = Connection("MongoLabAPIKey")
>>> con.database.collection.find()
>>> list(con.database.collection.find())
[{u'_id': ObjectId('50243d38e4b00c3b3e75fc94'), u'foo': u'bar',
u'tld': u'com'}, {u'_id': ObjectId('50004d646cf431171ed53846'),
u'foo': u'bar', u'tld': u'org'}]

Inserción de documentos

>>> doc = {"foo": "bar"}
>>> docs = [{"foo": "bar"}, {"foo": "bar"}]
>>> from pymongolab import Connection
>>> con = Connection("MongoLabAPIKey")
>>> #Inserting a document
... con.database.collection.insert(doc)
{u'foo': u'bar', u'_id': ObjectId('50242e46e4b0926293fd4d7c')}
>>> #Inserting documents
... con.database.collection.insert(docs)
{u'n': 2}

Actualización de documentos

>>> from pymongolab import Connection
>>> con = Connection("MongoLabAPIKey")
>>> list(con.database.collection.find())
[{u'_id': ObjectId('50243d38e4b00c3b3e75fc94'), u'foo': u'bar',
u'tld': u'org'}]
>>> con.database.collection.update({"foo": "bar"},
... {"$set": {"tld": "com"}})
1
>>> list(con.database.collection.find())
[{u'_id': ObjectId('50243d38e4b00c3b3e75fc94'), u'foo': u'bar',
u'tld': u'com'}]
>>> con.database.othercollection.update({"foo":"bar"},
... {"$set": {"tld": "com"}}, multi=True)
6

Eliminación de documentos

>>> from pymongolab import Connection
>>> con = Connection("MongoLabAPIKey")
>>> #Deleting a document
... con.database.collection.remove({"foo": "bar"})
2
>>> #Deleting all documents
... con.database.collection.remove()
22

Este módulo también lo registré en PyPi y dupliqué la documentación en ReadTheDocs:

Standard