我读了很多问题&关于如何在Mongoengine(和MongoDB)中更新文档的SO的答案,但我的问题是所有人都推荐"手动"将所有想要更新的字段作为参数给予参数 - 例如
p.update(**{
"set__name": "Hank",
"set__address": "Far away"
})
我遇到的问题如下:
有没有办法以更高级别的方式使用Python更新Mongoengine / MongoDB中的文档? (更具体地说,我希望更新MongoDB中的文档,如果它自上次从数据库中读取以来没有更改过。)
所以我的申请非常复杂。我经常传递一个对象 p ,它对应于数据库中的文档,因此不同的方法会修改它的字段,然后在所有更新结束时我想要保存修改后的文档而不用不得不担心哪个字段有变化以及我需要使用哪个修饰符。
有任何建议我如何做到这一点或实施某些事情来做到这一点?
谢谢!
答案 0 :(得分:0)
我刚刚找到了我的问题的答案:似乎从mongoengine 0.8.5开始,他们在save()函数中添加了一个新参数 - 称为save_condition - 这正是我所要求的:
save_condition – only perform save if matching record in db
satisfies condition(s) (e.g., version number)