MongoEngine文档 新手教程 Document实例

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  


转载于:https://my.oschina.net/snice/blog/667784

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值