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'}}]}