一个小型的基于python mongodb文档的访问引擎。

pmongo的Python项目详细描述


项目办

一个小型的基于python mongodb文档的访问引擎。

安装

 pip install pmongo

使用

# base use# importfrompmongo.documentimportDocumentfrompmongo.utilsimportget_mongo_dbdb=get_mongo_db(dbname='test')# define document classclassData(Document):db=dbclassMeta:ordering=['age']# new a instanced1=Data()# set data and saved1['grade']=2d1['name']='Tom'd1['age']=8d1.save()d2=Data()d2['grade']=2d2['name']='Lucy'd2['age']=6d2.save()d3=Data()d3['grade']=3d3['name']='Jack'd3['age']=7d3.save()# display document ObjectIdprint('d1.id:',d1.id)# queryprint('grade=2:',Data.objects.find(grade=2).all())# query countprint('count of grade=2:',Data.objects.find(grade=2).count())# default order byprint('default order by',Data.objects.find().all())print('default order by -age',Data.objects.find().order_by('-age').all())# changed2['grade']=1d2.save()print('count of grade=2:',Data.objects.find(grade=2).count())# delete documentData.objects.find(grade=2).delete()print('-------')# django like queryfrompmongo.queryimportQueryMangerclassData2(Document):db=dbobjects=QueryManger()print(Data2.objects.create(age=20,name='Tom'))Data2(age=10,name='Jone').save()Data2(age=15,name='Jack').save()print('age>=10:',Data2.objects.find(age__gte=10).count())print('age>11:',Data2.objects.find(age__gt=11).count())print('between 10~21',Data2.objects.find(age__between=(10,21)).count())# delete age fieldd1.unset(['age'])print(d1)# update dataprint('update',Data2.objects.find(age__between=(10,21)).update(age=25))print('between 10~21',Data2.objects.find(age__between=(10,21)).count())print('age=25',Data2.objects.find(age=25).count())Data(name='Robin',books=[{'bid':1,'name':'Python Cookbook'},{'bid':2,'name':'Java 23 Days'},{'bid':3,'name':'Android Kit'}]).save()Data(name='Tom',books=[{'bid':10,'name':'DDL'}]).save()print('book of [1]:',Data.objects.find({'books.bid':1}).count())print('book of [2, 10]:',Data.objects.find({'books.bid':{'$in':[2,10]}}).count())print(Data.objects.find(name='Tom').values(name=0,_id=0).all())d1=Data.objects.find().first()d2=Data.objects.find().first()print('--------')print(id(d1),d1)print(id(d2),d2)print(d1==d2)print(set([d1,d2]))print(Data.objects.find().delete())print(Data2.objects.find().delete())

输出:

d1.id: 5bf7ddc8f56f4bc0d639a572
grade=2: [Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 2, 'name': 'Lucy', 'age': 6}], Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a572'), 'grade': 2, 'name': 'Tom', 'age': 8}]]
count of grade=2: 2
default order by [Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 2, 'name': 'Lucy', 'age': 6}], Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a574'), 'grade': 3, 'name': 'Jack', 'age': 7}], Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a572'), 'grade': 2, 'name': 'Tom', 'age': 8}]]
default order by -age [Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a572'), 'grade': 2, 'name': 'Tom', 'age': 8}], Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a574'), 'grade': 3, 'name': 'Jack', 'age': 7}], Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 2, 'name': 'Lucy', 'age': 6}]]
count of grade=2: 1
-------
Data2[{'age': 20, 'name': 'Tom', '_id': ObjectId('5bf7ddc8f56f4bc0d639a575')}]
age>=10: 3
age>11: 2
between 10~21 3
Data[{'grade': 2, 'name': 'Tom', '_id': ObjectId('5bf7ddc8f56f4bc0d639a572')}]
update 3
between 10~21 0
age=25 3
book of [1]: 1
book of [2, 10]: 2
[Data[{'books': [{'bid': 10, 'name': 'DDL'}]}]]
--------
4475195856 Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 1, 'name': 'Lucy', 'age': 6}]
4475196976 Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 1, 'name': 'Lucy', 'age': 6}]
False
{Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 1, 'name': 'Lucy', 'age': 6}], Data[{'_id': ObjectId('5bf7ddc8f56f4bc0d639a573'), 'grade': 1, 'name': 'Lucy', 'age': 6}]}
4
3

更改

1.0.0

  • 第一个版本

1.0.6

  • 支持“创建、更新”

1.0.8

  • 用dictionary param修复find()

1.0.9

  • 支持值()

1.0.10

  • 支持元排序

1.0.11

  • 删除文档的eq

1.0.12

  • 支持python 3.x

1.0.14

  • 保存文档时支持更新字段

1.0.16

  • 修复$LTE日期错误

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中为上传的文件设计强制的文件夹结构   java我如何在下面的代码中解决这个>错误HTTP Status 404   java如何在方面字段Lucene上添加分页   java My 安卓应用程序在尝试10次后崩溃   java“找不到Spring NamespaceHandler”错误   连接到Dynamodb时发生java AWS lambda错误   过程的价值。JAVA中的exitValue()   eclipse vscode java正在尝试设置项目   JavaEclipse不再自动在javadocs中添加标签   java找不到LoggerFactory类   在Java中实现延迟   设置onClickListener时的java NullPointerException   用jsoup解析HTML:Android和Java的区别