如何解决如何在pymongo中使用upsert?
我直接将数据从postgresql转换为json并将其传输到mongo。
sql= """select array_to_json(array_agg(row_to_json(a))) from(select * from {}) a ; """.format(row[0])
cursor.execute(sql_etl)
data = cursor.fetchall()
data=data[0][0]
if isinstance(data,list):
collection.insert_many(data,upsert=True)
else:
collection.insert_one(data)
我正在为此使用insert_many。但是我得到与insert_many重复。 Pymongo也有重复的upsert。在update_many函数中使用。如何在update_many中使用此upsert?
解决方法
您可以使用bulk_write
执行多次写操作。
和ReplaceOne
进行“ upsert”查询
from pymongo import ReplaceOne
upserts = [ReplaceOne({"_id": x["_id"]},x,upsert=True) for x in data]
collecion.bulk_write(upserts,ordered=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。