版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在Python中用法mongoengine操作MongoDB教程_ 在Python中用法mongoengine操作MongoDB教程 这篇文章主要介绍了在Python中用法mongoengine操作MongoDB教程,包括在Django下的一些用法技巧,需要的伴侣可以参考下 最近重新捡起Django,但是Django并不支持mongodb,但是有一个模块mongoengine可以实现Django Model类似的封装.但是mongoengine的中文文档几乎没有,有的也是简短的几句介绍和用法.下面我就分享一下我在用法过程中所记录下的一些笔记,可能有点乱.大家可以参考一下. 安装mongoeng
2、ine easy_install pymongo # 依靠库 easy_install mongoengine 基本用法 from mongoengine import * from datetime import datetime # 连接数据库 connect(blog) # 连接本地blog数据库 # 如需验证和指定主机名 # connect(blog, host=, username=root, password=1234) # 定义分类文档 class Categories(Document): 继承Document类,为一般文档 name = StringFi
3、eld(max_length=30, required=True) artnum = IntField(default=0, required=True) date = DateTimeField(default=datetime.now(), required=True) 和Django的model用法很类似,所以也不说明什么. 插入 cate = Categories(name=Linux) # 假如required为True则必需给予初始值,假如有default,给予初始值则用法默认值 cate.save() # 保存到数据库 查询和更新 文档类有一个 objects 属性.我们用法它来
4、查询数据库. # 返回集合里的全部文档对象的列表 cate = Categories.objects.all() # 返回全部符合查询条件的结果的文档对象列表 cate = Categories.objects(name=Python) # 更新查询到的文档: = LinuxZen cate.update() 查询数组 默认查询数组=代表的意思是in: class Posts(Document): artid = IntField(required=True) title = StringField(max_length=100, required=True) conten
5、t = StringField(required=True) author = ReferenceField(User) tags = ListField(StringField(max_length=20, required=True), required=True) categories = ReferenceField(Categories), required=True) comments = IntField(default=0, required=True) # 将会返回全部tags包含coding的文档 Posts.objects(tags=coding) ReferenceFi
6、eld 引用字段: 通过引用字段可以通过文档挺直猎取引用字段引用的那个文档: class Categories(Document): name = StringField(max_length=30, required=True) artnum = IntField(default=0, required=True) date = DateTimeField(default=datetime.now(), required=True) class Posts(Document): title = StringField(max_length=100, required=True) conten
7、t = StringField(required=True) tags = ListField(StringField(max_length=20, required=True), required=True) categories = ReferenceField(Categories) 插入引用字段 cate =Categories(name=Linux) cate.save() post = Posts(title=L, content=L,tags=Linux,web, categories=cate) post.save() 通过引用字段挺直猎取引用文档对象 一般文档查询会返回一个列
8、表(尽管只有一个结果),我们想要获得一个文档对象可以用法索引猎取第一个文档对象,但是mongoengine建议用法first()来猎取第一个: cate = Posts.objects.all().first().categories cate uLinux 查询包含Linux分类的文章 cate = Categories.objects(name=Linux).first() Posts.objects(categories=cate) EmbeddedDocument 嵌入文档 继承EmbeddedDocument的文档类就是嵌入文档,嵌入文档用于嵌入其他文档的Embe
9、ddedDocumentField 字段,比如上面例子的tags字段假如改成嵌入文档的话可以将Posts文档类改成如下方式: class Posts(Document): title = StringField(max_length=100, required=True) content = StringField(required=True) tags = ListField(EmbeddedDocumentField(Tags)required=True) categories = ReferenceField(Categories) 还需要添加一个Tags嵌入文档类: class Tag
10、s(EmbeddedDocument): name = StringField() date = DateTimeField(default=datetime.now() 我们像如下方式插入Posts文档中的Tags tag = Tags(name=Linuxzen) post = Posts(title=L, content=L, tags=tag, categories=cate) tag = Tags(name=mysite) post.tags.append(tag) post.save() tags = post.tags for tag in tags: print tag.nam
11、e Linuxzen mysite 时间段查询 start = datetime(int(year), int(month), 1) if int(month) + 1 12: emonth = 1 eyear = int(year) + 1 else: emonth = int(month) + 1 eyear = int(year) end = datetime(eyear, emonth, 1) articles = Posts.objects(date_gte=start, date_lt=end).order_by(-date) 分片 slice用于分片 # comments - s
12、kip 5, limit 10 Page.objects.fields(slice_comments=5, 10) # 也可以用法索引值分片 # limit 5 users = User.objects:5 # skip 5 users = User.objects5: # skip 10, limit 15 users = User.objects10:15 用法原始语句查询 假如想用法原始的pymongo查询方式可以用法_raw_操作符 Page.objects(raw=tags:coding) 用法$inc和$set操作符 # 更新嵌入文档comments字段by的值为joe的文档字段votes增加1 Page.objects(comments_by=joe).update(inc_votes=1) # 更新嵌入文档comments字段by的值为joe的文档字段votes设置为1 Page.objects(com
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 917-2026公路路线标识规则和国道编号
- T/SDJSXH 07-2024塔式起重机自动驾驶系统应用技术规程
- T/JX 001-2024喷水织机行业中水回用水质要求
- T/CCSAS 052-2025三氯氢硅还原法多晶硅生产安全技术规范
- T/CCPA 74-2025公路与市政工程预制混凝土构件智能工厂技术要求
- T/CSMT HJ005-2026产品碳足迹数据质量溯源性要求
- GB/T 48281-2026航空器操纵钢丝绳套管尺寸与载荷
- 2025~2026学年广西壮族自治区玉林市陆川县人教版六年级上册11月期中数学试卷【附答案】
- 甘肃省定西市2027届七上数学期末调研模拟试题含解析
- PHP常用复试面试题及详细答案(真实职场版)
- 阿拉善盟教师招聘真题2025
- 湖南省长沙市2026-2027学年高一上学期期中考试语文自编卷(范围:统编版必修一1-4单元)(原卷版)
- 2026年食品标签标识规范业务考试试卷试题及答案
- GJB 151C-2024 军用设备和分系统 电磁发射和敏感度要求与测量
- ISO9001-2026质量管理体系标准培训
- 2026版公路水运工程试验检测专业技术人员职业资格考试《桥隧工程一本通》
- IPC-JEDEC J-STD-020F-2024 中文版(非气密固态表面贴装器件的潮湿 - 再流焊敏感度分级)
- 2025浙江鹿城农商银行春季招聘笔试历年典型考题及考点剖析附带答案详解
- 2026国家电投集团所属国家核电招聘(41人)笔试历年典型考点题库附带答案详解
- 智慧城市重大危险源在线监控及事故预警平台规划方案
- 2025四川绵阳市绵投置地有限公司人力资源岗等岗位拟录用人选笔试历年参考题库附带答案详解
评论
0/150
提交评论