MongoEngine 中文文档 系列教程 User Guide( 三)
2015-10-09 17:08
531 查看
Document实例
创建一个新的document对象,创建一个相关document类的实例,可以在字段的构造器中赋值。你可以在任何document里面的字段设置值;
[python]
>>> page = Page(title="Test Page")
>>> page.title
'Test Page'
你可以使用基础对象属性的语法来赋值:
[python]
>>> page.title = "Example Page"
>>> page.title
'Example Page'
保存和删除Document
mongoengine在有效保存的时候会追踪document里面的变化。保存数据到数据库中,使用save() 方法。如果该document在数据库里面不存在,则会创建相应的document,如果已存在,则会应该用document中的更改:
[python]
>>> page = Page(title="Test Page")
>>> page.save() # Performs an insert
>>> page.title = "My Page"
>>> 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]
>>> page = Page(title="Test Page")
>>> page.id
>>> page.save()
>>> page.id
ObjectId('123456789abcdef000000000')
或者,你可以通过在字段构造器里面设置 primary_key=True 来指定自己的一个字段来作为主键。这种情况下,mongoengine会使用这个指定的字段作为id 。事实上,id只是你指定的主键字段的别名,你仍然可以把id 当作主键来使用:
[python]
>>> class User(Document):
... email = StringField(primary_key=True)
... name = StringField()
...
>>> bob = User(email='bob@example.com', name='Bob')
>>> bob.save()
>>> bob.id == bob.email == 'bob@example.com'
True
你也可以使用document 的 pk 字段来访问 id ,它是id 的别名:
[python]
>>> page = Page(title="Another Test Page")
>>> page.save()
>>> page.id == page.pk
创建一个新的document对象,创建一个相关document类的实例,可以在字段的构造器中赋值。你可以在任何document里面的字段设置值;
[python]
>>> page = Page(title="Test Page")
>>> page.title
'Test Page'
你可以使用基础对象属性的语法来赋值:
[python]
>>> page.title = "Example Page"
>>> page.title
'Example Page'
保存和删除Document
mongoengine在有效保存的时候会追踪document里面的变化。保存数据到数据库中,使用save() 方法。如果该document在数据库里面不存在,则会创建相应的document,如果已存在,则会应该用document中的更改:
[python]
>>> page = Page(title="Test Page")
>>> page.save() # Performs an insert
>>> page.title = "My Page"
>>> 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]
>>> page = Page(title="Test Page")
>>> page.id
>>> page.save()
>>> page.id
ObjectId('123456789abcdef000000000')
或者,你可以通过在字段构造器里面设置 primary_key=True 来指定自己的一个字段来作为主键。这种情况下,mongoengine会使用这个指定的字段作为id 。事实上,id只是你指定的主键字段的别名,你仍然可以把id 当作主键来使用:
[python]
>>> class User(Document):
... email = StringField(primary_key=True)
... name = StringField()
...
>>> bob = User(email='bob@example.com', name='Bob')
>>> bob.save()
>>> bob.id == bob.email == 'bob@example.com'
True
你也可以使用document 的 pk 字段来访问 id ,它是id 的别名:
[python]
>>> page = Page(title="Another Test Page")
>>> page.save()
>>> page.id == page.pk
相关文章推荐
- MongoEngine 中文文档 系列教程 User Guide( 二)
- MongoEngine 中文文档 系列教程 User Guide( 一)
- ***Xcode Interface Builder或Storyboard中可建立那两种连接?
- iOS开发-------滚动视图(UIScrollView)并实现循环滚动
- iOS开发 手势识别UIGestureRecognizer
- 使用requireJS,backboneJS,和underscoreJS完成自定义模板封装
- RPC和Message Queue对比
- UIButton在不同状态下显示不同背景色
- configure: error: GRUB requires a working absolute objcopy; upgrade your binutils 解决方法
- UINavigationController使用之手动添加UIBarButtonItem
- 【jmeter】Jmeter启动GUI界面出错
- Java --- AbstractQueuedSynchronizer
- UESTC 87 Easy Problem With Numbers 线段树区间更新 逆元 分解质因数
- Guide: Solr performance tuning--转载
- ios上 更改 状态栏(UIStatusBar)的颜色
- 导航控制器UINavigationController
- Android UI框架基本概念
- UIButton中的三个UIEdgeInsets属性(二)
- UIButton中的三个UIEdgeInsets属性(一)
- [Phonegap+Sencha Touch] 移动开发66 sencha touch可编辑的div(ContentEditable=true)下,长按不弹出“复制粘贴”菜单的解决办法