Python BulkWriteError发生时Pymongo插入的ID
我知道,只要访问操作返回的文件,我们就可以获得大量插入的文档Python BulkWriteError发生时Pymongo插入的ID,python,mongodb,pymongo,unique-index,Python,Mongodb,Pymongo,Unique Index,我知道,只要访问操作返回的文件,我们就可以获得大量插入的文档 >>> o = db.collection.insert_many([{"hash": "abcde"}, {"hash": "efgh"}], ordered=False) >>> o.inserted_ids [ObjectId('5f5280fdca7d7735e9dcbb85'), ObjectId('5f
>>> o = db.collection.insert_many([{"hash": "abcde"}, {"hash": "efgh"}], ordered=False)
>>> o.inserted_ids
[ObjectId('5f5280fdca7d7735e9dcbb85'), ObjectId('5f5280fdca7d7735e9dcbb86')]
但请考虑上面集合中有<代码>唯一索引字段(让我们说“代码>”哈希“< /代码>”,现在我插入另外两个记录,其中一个记录有<强>重复的< /强>已插入的唯一字段,这将导致预期的<强>异常< /强>
但我的问题是,我们能否获得成功插入的文档的插入ID(即显示为
'nInserted'
)?不,您不能。请看我的答案,这是一个类似的问题。不,你不能。查看我的答案,这是一个类似的问题。这是否回答了您的问题?这回答了你的问题吗?似乎没有别的办法。。。我已经看到了您共享的这个线程,我不想再次返回并查询以查找新插入的ID…我希望有不同的结果,但似乎没有其他方法…所以接受这个答案来标记这个问题已结束。似乎没有其他方法。。。我已经看到了您共享的这个线程,我不想再返回并查询以查找新插入的ID…我希望有不同的结果,但似乎没有其他方法…所以接受这个答案来标记这个问题已结束。
>>> try:
o = db.collection.insert_many([{"hash": "efgh"}, {"hash": "ijk"}], ordered=False)
except BulkWriteError as e:
print(e.details)
{'nInserted': 1,
'nMatched': 0,
'nModified': 0,
'nRemoved': 0,
'nUpserted': 0,
'upserted': [],
'writeConcernErrors': [],
'writeErrors': [{'code': 11000,
'errmsg': 'E11000 duplicate key error collection: '
'db.collection index: hash_1 dup key: { : "efgh" }',
'index': 0,
'op': {'_id': ObjectId('5f52814381c45515348fd36b'),
'hash': 'efgh'}}]}