pymongo中的内容是否已弃用?

时间:2017-10-21 18:37:36

标签: mongodb pymongo deprecation-warning

我正在使用pymongo从MongoDB集合中复制documnents,然后修改它们,然后用save保存它们。

不幸的是我开始收到弃用警告:

DeprecationWarning: save is deprecated. Use insert_one or replace_one instead

推荐替换具有不同的功能:insert_one在重复_id时抱怨,update_one需要过滤参数。

如何禁用弃用警告?

2 个答案:

答案 0 :(得分:0)

如果您阅读并修改文档,然后使用修改后的副本替换服务器上的文档,则应使用replace_one

doc = collection.find_one()
doc['key'] = value
collection.replace_one({'_id': doc['_id']}, doc)

如果您的目的是更新文档中的特定字段,那么update_one更快(它需要一次往返服务器而不是两次)并且更安全(它不容易相同)竞争条件,如果多个进程正在更新同一文档)。

答案 1 :(得分:0)

如果您要保存的文档已_id使用replace_one,则使用insert_one

if '_id' in doc:    
    collection.replace_one({'_id': doc['_id']}, doc)
else:
    collection.insert_one(doc)
pymongo的未来版本将不支持

save,最好停止使用它。