使用自定义_id时如何更新批量写入?

时间:2017-09-07 14:37:52

标签: python mongodb pymongo objectid

我在插入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()

我知道这些只是整个代码的一部分,但也许它可以解决可能出错的问题。

0 个答案:

没有答案