MongoEngine – 添加/删除文档

MongoEngine – 添加/删除文档

我们已经使用Document类的save()方法在集合中添加一个文档。save()方法可以在以下参数的帮助下进一步定制—

force_insert 默认为False,如果设置为True,则不允许更新现有文档。
validate 对文档进行验证;设置为False则跳过。
clean 调用文档的清洁方法,验证参数应该为Tr。
Write_concern 将作为结果getLastError命令的选项。例如,save(…, write_concern={w: 2, fsync: True}, …)将等待至少两个服务器记录了写入的内容,并将在主服务器上强制进行fsync。
cascade 设置级联保存的标志。你可以通过在文档的meta中设置 “cascade “来设置一个默认值。
cascade_kwargs 可选的关键字参数,用于传递给级联保存的参数。相当于 cascade=True。
_refs 级联保存中使用的已处理的引用列表。
Save_condition 只有当数据库中的匹配记录满足条件时才执行保存。如果条件不满足,则引发OperationError。
signal_kwargs 要传递给信号调用的kwargs字典。

你可以在调用save()之前设置清洁规则来验证文档。通过提供一个自定义的 clean() 方法,你可以做任何预先验证/数据清理。

class MyDocument(Document):
   ...
   ...

   def clean(self):
      if <condition>==True:
         msg = 'error message.'
         raise ValidationError(msg)

请注意,只有在打开验证功能和调用save()时才会调用Cleaning。

文档类也有 insert() 方法来执行批量插入。它有以下参数 –

doc_or_docs 一个要插入的文档或文档列表
load_bulk 如果为真,返回文档实例的列表
write_concern 额外的关键字参数被传递给insert(),这些参数将作为结果getLastError命令的选项。
signal_kwargs (可选的)传递给信号调用的kwargs字典。

如果文档包含任何ReferenceField对象,那么默认情况下save()方法将不保存对这些对象的任何修改。如果你希望所有的引用也被保存,并注意到每次保存都是一个单独的查询,那么将cascade作为True传递给save方法将串联任何保存。

通过调用delete()方法,从其集合中删除一个文档是非常容易的。请记住,只有在该文档之前被保存过的情况下,它才会生效。delete()方法有以下参数 –

signal_kwargs (可选的)kwargs字典,用于传递给信号调用。
write_concern 额外的关键字参数被传递下来,这些参数将被用作结果getLastError命令的选项。

要从数据库中删除整个集合,请使用 drop_collecction() 方法。它将从数据库中删除与该文档类型相关的整个集合。如果文档没有集合(例如,如果它是抽象的),该方法会引发 OperationError。

document类中的 modify() 方法对数据库中的文档进行原子式更新,并重新加载其更新版本。如果文档已经被更新,它返回True;如果数据库中的文档与查询不匹配,它返回False。请注意,如果该方法返回True,所有未保存的对文档的修改将被拒绝。

参数

查询 只有当数据库中的文档与查询匹配时,才会执行更新。
update Django风格的更新关键字参数

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程