MongoEngine - 添加/删除文档
我们已经使用 Document 类的 save() 方法在集合中添加了一个文档。 可以在以下参数的帮助下进一步自定义 save() 方法 −
force_insert | 默认为 False,如果设置为 True 则不允许更新现有文档。 |
validate | 验证文档; 设置为 False 跳过。 |
clean | 调用文档清理方法,validate 验证参数应为 True。 |
write_concern | 将用作结果 getLastError 命令的选项。 例如,save(..., write_concern={w: 2, fsync: True}, ...) 将等到至少有两个服务器记录了写入并强制在主服务器上进行同步。 |
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() 时才会调用清理。
Document 类还有insert() 方法来执行批量插入。 它有以下参数 −
doc_or_docs | 要插入的文档或文档列表 |
load_bulk | 如果为 True,返回文档实例列表 |
write_concern | 额外的 keyword 关键字参数被传递给 insert() ,它将用作结果 getLastError 命令的选项。 |
signal_kwargs | (可选)要传递给信号调用的 kwargs 字典 |
如果文档包含任何 ReferenceField 对象,则默认情况下 save() 方法不会保存对这些对象的任何更改。 如果您还希望保存所有引用,请注意每次保存都是一个单独的查询,然后将级联作为 True 传递给保存方法将保存任何级联。
通过调用 delete() 方法,从其集合中删除文档非常容易。 请记住,只有在文档之前已保存时它才会生效。 delete() 方法具有以下参数 −
signal_kwargs | (可选)要传递给信号调用的 kwargs 字典。 |
write_concern | 额外的关键字参数被传递下来,它们将用作结果 getLastError 命令的选项。 |
要从数据库中删除整个集合,请使用 drop_collecction() 方法。 它从数据库中删除与此文档类型关联的整个集合。 如果文档没有集合集(例如,如果它是抽象的),则该方法引发 OperationError。
文档类中的modify() 方法对数据库中的文档执行原子更新并重新加载其更新版本。如果文档已更新,则返回 True;如果数据库中的文档与查询不匹配,则返回 False。 请注意,如果该方法返回 True,所有对文档所做的未保存的更改都将被拒绝。
参数
query | 仅当数据库中的文档与查询匹配时才会执行更新 |
update | Django 风格的更新关键字参数 |