在Python中用法mongoengine操作MongoDB教程__第1页
在Python中用法mongoengine操作MongoDB教程__第2页
在Python中用法mongoengine操作MongoDB教程__第3页
在Python中用法mongoengine操作MongoDB教程__第4页
在Python中用法mongoengine操作MongoDB教程__第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论