最小pymongo对象包装器
mongo的Python项目详细描述
最简单的pymongo对象包装器
文档
最小文档模型:
>>> from mongo import Document, Index >>> class Doc(Document): ... __database__ = 'mongo_test' # database name
所有允许的设置:
>>> class Doc(Document): ... __connection__ = {'host': 'localhost', 'port': 27017} ... #__auth__ = ('username', 'password') ... __database__ = 'mongo_test' # database name ... __collection__ = 'test' # collection name ... __safe__ = True # enable safe insert mode ... ... __indexes__ = [ ... Index('number', unique=True, sparse=True), ... ]
清除集合
>>> t = Doc.remove() >>> Doc.count() 0
创建文档
>>> doc = Doc(foo='bar') >>> doc['number'] = 10 >>> doc.save() >>> '_id' in doc True
取回
按id获取:
>>> doc1 = Doc.get_by_id(doc.id) >>> doc1 == doc True
找到一个:
>>> doc2 = Doc.find_one({'number': 10}) >>> doc2 == doc True
查找:
>>> doc3 = Doc.find({'number': 10}).limit(1)[0] >>> doc3 == doc True
获取或创建:
>>> doc4, new = Doc.get_or_create({'number': 10}, defaults={'foo': 'bar'}) >>> new False >>> doc4 == doc True
更新
更新筛选的文档:
>>> t = Doc.update({'number': 10}, {'$set': {'text': 'foo'}}) >>> doc = Doc.find_one({'number': 10}) >>> doc['text'] u'foo'
仅保存一些字段:
>>> doc['text'] = u'bar' >>> doc['number'] = 11 >>> doc.save_fields('text') >>> doc = Doc.find_one({'number': 10}) >>> doc['text'], doc['number'] (u'bar', 10)
仅更新部分字段:
>>> doc.atomic_update({'$inc': {'number': 2}}) >>> doc = Doc.find_one({'text': 'bar'}) >>> doc['number'] 12
计数
>>> Doc().save() >>> Doc.count() 2 >>> Doc.find({'number': 12}).count() 1
删除
删除单个文档:
>>> t = doc.delete() >>> Doc.find_one({'number': 12})
删除一些文档:
>>> t = Doc.remove({'number': 10})
删除所有文档:
>>> t = Doc.remove()