簡體   English   中英

即使批量記錄中的一條失敗,如何使用MongoDB批量插入(使用PyMongo)?

[英]How can I bulk insert with MongoDB (using PyMongo), even when one record of the bulk fails?

我有一些Python代碼,使用PyMongo將許多列表(每個列表包含1000個對象)插入具有唯一索引(字段名稱為data_id )的data_id

但是,我的一些對象列表在要插入的不同列表集中具有重復的數據( 例如 ,第二個1000個對象列表具有一個或兩個記錄,這些記錄與先前在第一組對象中插入的某些對象相同。批量插入)。

這是問題所在 :當代碼批量插入一組1000個對象,並且一個對象具有先前插入的data_id ,所有1000個對象的整個插入操作都會失敗。 我正在執行插入,如下所示:

inserted = False
try:
    collection = self.db[self.database][self.collection]
    collection.insert(record)
    inserted = True

except pymongo.errors.ConnectionFailure, e:
    sys.stdout.write('Error connecting to %s: %s\n' % (self.connection_url, e))
except BaseException, e:
    sys.stdout.write('An error occurred in add_record: %s\n' % e)

return inserted

我已經在某處閱讀(現在在任何地方都找不到參考!),可以通過告訴Mongo列表是無序的來避免這種情況。 所以我嘗試通過插入行ordered=False ,但這失敗了:

__init__() got an unexpected keyword argument 'ordered'

有誰知道如何使用PyMongo.insert()無序插入對象列表,以便僅非唯一記錄失敗,其余部分按預期插入?

找到了答案。 對於那些有興趣, .insert()已被棄用,在PyMongo ,並建議使用.insert_many()它尊重ordered=False關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM