文档章节

MongoEngine文档 新手教程 Document实例

一叶一枯
 一叶一枯
发布于 2016/04/28 19:56
字数 509
阅读 63
收藏 0

Document实例

创建一个新的document对象,创建一个相关document类的实例,可以在字段的构造器中赋值。你可以在任何document里面的字段设置值;

[python] 

  1. >>> page = Page(title="Test Page")  

  2. >>> page.title  

  3. 'Test Page'  

你可以使用基础对象属性的语法来赋值:

[python] 

  1. >>> page.title = "Example Page"  

  2. >>> page.title  

  3. 'Example Page'  

保存和删除Document
mongoengine在有效保存的时候会追踪document里面的变化。保存数据到数据库中,使用save() 方法。如果该document在数据库里面不存在,则会创建相应的document,如果已存在,则会应该用document中的更改:

[python] 

  1. >>> page = Page(title="Test Page")  

  2. >>> page.save()  # Performs an insert  

  3. >>> page.title = "My Page"  

  4. >>> page.save()  # Performs an atomic set on the title field.  

串联保存
如果你的document里面包含   ReferenceField 或者GenericReferenceField 对象,默认情况下使用save() 方法时会自动应用这些引用的document的变化,如果你不需要这个特性,可以把cascade 设置为 False。  

删除Document

删除document的时候,使用delete() 方法。它只在这个document存在的时候有效。

Document ID

数据库里面的没一个Document都有一个唯一的ID。这个可以通过Document的id属性来访问。通常,这个ID是由数据库在数据保存的时候自动生成的,这意味着你只能访问那些已经保存了的document的id。

[python] 

  1. >>> page = Page(title="Test Page")  

  2. >>> page.id  

  3. >>> page.save()  

  4. >>> page.id  

  5. ObjectId('123456789abcdef000000000')  


或者,你可以通过在字段构造器里面设置 primary_key=True  来指定自己的一个字段来作为主键。这种情况下,mongoengine会使用这个指定的字段作为id 。事实上,id只是你指定的主键字段的别名,你仍然可以把id 当作主键来使用:

[python]  

  1. >>> class User(Document):  

  2. ...     email = StringField(primary_key=True)  

  3. ...     name = StringField()  

  4. ...  

  5. >>> bob = User(email='bob@example.com', name='Bob')  

  6. >>> bob.save()  

  7. >>> bob.id == bob.email == 'bob@example.com'  

  8. True  

你也可以使用document 的 pk 字段来访问 id ,它是id 的别名:

[python]  

  1. >>> page = Page(title="Another Test Page")  

  2. >>> page.save()  

  3. >>> page.id == page.pk  


本文转载自:http://my.oschina.net/leaf0s/blog/129967

一叶一枯
粉丝 1
博文 10
码字总数 5416
作品 0
广州
程序员
私信 提问
MongoEngine文档翻译__新手教程(一)安装MongoEngine&连接MongoDB

PS:非常不错的mongoengine新手教程 最近开始做一个Python + MongoDB的项目,用到了MongoEngine这个非常不错的ORM工具,我将MongoEngine的文档翻译一部分出来,与大家分享。 安装MongoEngine...

LeafSummer
2013/05/12
0
0
MongoEngine文档翻译__新手教程(二)定义文档

在MongoDB里面,一条文档大致相当于关系型数据库里面的一行。在关系型数据库里面,行是被存储在表里面,并且有一个严格的结构。MongoDB里面把文档存储在集合里面而不是存在表里面,最根本上的...

LeafSummer
2013/05/12
0
0
在 Django 中使用 MongoDB

每一个Django工程师在接触NOSQL数据库的时候,肯定都会思考一个问题:在Django中不能像操作普通的关系型数据库(以下简称RDB)一样,操作NOSQL数据库吗?当然可以,Django工程师几乎不需要什么...

岭南六少
2011/08/18
0
0
MongoEngine__新手教程(五)在django框架里使用mongodb

先很简单的创建一个django的工程(具体不说django), 然后弄个小app或者随便哪里写个view就好了. 然后我用了几步就确定它可以正常使用了. 首先修改settings.py, 原来DATABASES完全不用去管它了...

LeafSummer
2013/05/12
0
2
MongoEngine文档翻译__新手教程(三)Document实例

Document实例 创建一个新的document对象,创建一个相关document类的实例,可以在字段的构造器中赋值。你可以在任何document里面的字段设置值; [python] >>> page = Page(title="Test Page")...

LeafSummer
2013/05/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

状态模式

//相当把一个State对象存到Context对象中,然后通过Context实例化对象调用保存的state对象去调用state的相应的方法 https://blog.csdn.net/syc434432458/article/details/51210361...

南桥北木
12分钟前
0
0
基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计

本文首发于:Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 "有所了解"指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当...

Jenkins中文社区
19分钟前
2
0
聊聊Elasticsearch的OsProbe

序 本文主要研究一下Elasticsearch的OsProbe OsProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/os/OsProbe.java public class OsProbe { private static f......

go4it
19分钟前
0
0
谈谈lucene的DocValues特性之NumericDocValuesField

在默认实现的DocValuesCosumer中,数值有可能分块存储也有可能放在一个数据块中存储。 分块的大小默认是16384,并且通过预先计算如果按一个块存储最大值与最小值的差所占用的比特数和分块存储...

FAT_mt
38分钟前
0
0
【BATJ】面试必问MySQL索引实现原理

BATJ面试题剖析 1、为什么需要使用索引? 2、数据结构Hash、平衡二叉树、B树、B+树区别? 3、机械硬盘、固态硬盘区别? 4、Myisam与Innodb B+树的区别? 5、MySQL中的索引什么数据结构? 6、...

须臾之余
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部