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