我们的项目中有一个变通办法,当两个线程进行upsert时,可以处理重复的键错误:
try:
await db.collection.find_one_and_update(query, update, upsert=True)
except pymongo.errors.DuplicateKeyError:
await db.collection.find_one_and_update(query, update, upsert=True)
它可以正常工作,但是也许有更好的方法吗?另外,为什么会发生此错误?为什么Mongo无法从侧面进行处理(在一个查询中进行upsert,在另一查询中进行更新),而我们必须在应用程序代码中进行处理?