使用update_many方法禁用新字段的创建

时间:2016-12-26 17:24:07

标签: mongodb python-2.7 mongodb-query pymongo

我正在使用PyMongo驱动程序,我对update_many方法有疑问。

如果我尝试更新文档上不存在的字段的值,则将创建此字段。我希望这种方法能够引发错误。

在我开发自己的库时,我可以编写专门针对此问题的代码。因此,我对您可以提供的所有解决方案感兴趣。

1 个答案:

答案 0 :(得分:2)

您想要的是仅更新包含给定字段的文档。

为此,您需要在过滤条件中使用$exists查询运算符来仅选择这些文档。

db.collection.update_many({'fiedname': {'$exists': True}}, update_document)

如果您希望在没有文档符合您的查询条件时引发异常,最好的方法是在查询后检查modified_countmatched_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.