我正在使用pymongo从MongoDB集合中复制documnents,然后修改它们,然后用save保存它们。
不幸的是我开始收到弃用警告:
DeprecationWarning: save is deprecated. Use insert_one or replace_one instead
推荐替换具有不同的功能:insert_one
在重复_id
时抱怨,update_one
需要过滤参数。
如何禁用弃用警告?
答案 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,最好停止使用它。