我在插入MongoDB时没有指定_id,从而为每个文档获取一个唯一的MongoDB ObjectId。但是,现在我使用shortuuid.uuid来生成唯一的ID,它适用于插入但不能用于更新。每次我必须更新时,我必须注释掉我指定_id的部分。它更新并且工作正常,但由于我需要经常插入和更新,因此非常烦人。
批量写入如下:
# Update data
if data_to_be_updated:
# We don't want to update the unique id, so we remove it from the item
item.pop('_id', None)
collection.bulk_write([
UpdateOne(
filter = {'source_id': item['source_id']},
update = {'$set': item}
) for item in data_to_be_updated
])
以及我指定为_id使用shortuuid.uuid的部分:
# Prepare unique mongodb _id (to update, comment this out)
event_dict['_id'] = shortuuid.uuid()
我知道这些只是整个代码的一部分,但也许它可以解决可能出错的问题。