我正在使用PyMongo驱动程序,我对update_many
方法有疑问。
如果我尝试更新文档上不存在的字段的值,则将创建此字段。我希望这种方法能够引发错误。
在我开发自己的库时,我可以编写专门针对此问题的代码。因此,我对您可以提供的所有解决方案感兴趣。
答案 0 :(得分:2)
您想要的是仅更新包含给定字段的文档。
为此,您需要在过滤条件中使用$exists
查询运算符来仅选择这些文档。
db.collection.update_many({'fiedname': {'$exists': True}}, update_document)
如果您希望在没有文档符合您的查询条件时引发异常,最好的方法是在查询后检查modified_count
或matched_count
的值。如果等于0则会引发异常。
一切都放在一起:
update_result = db.collection.update_many({'fiedname': {'$exists': True}}, update_document)
if update_result.modified_count == 0: # you can also use matched_count
# raise your exception or what do whatever you want here.