[英]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.