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风格的更新关键字参数 |