我有一些 Python 代码,它使用PyMongo
将许多列表(每个1000个对象)插入到具有唯一索引的集合中(字段名称为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()
无序插入对象列表,以便只有非唯一记录失败,其余的按预期插入?
答案 0 :(得分:1)
找到答案。对于有兴趣的人,.insert()
已弃用PyMongo
,建议使用.insert_many()
,其中尊重ordered=False
关键字。