代码之家  ›  专栏  ›  技术社区  ›  Mahender Thakur

当BulkWriteError发生时Pymango初始化了ID

  •  0
  • Mahender Thakur  · 技术社区  · 6 年前

    我知道我们可以 inserted_ids pymongo.results.InsertManyResult 退回人 insert_many

    >>> o = db.collection.insert_many([{"hash": "abcde"}, {"hash": "efgh"}], ordered=False)
    >>> o.inserted_ids
       [ObjectId('5f5280fdca7d7735e9dcbb85'), ObjectId('5f5280fdca7d7735e9dcbb86')]
    

    但让我们考虑一下 unique index "hash" 复制 已插入的唯一字段,该字段将导致预期的 例外情况 BulkWriteError

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

    'nInserted' ) ?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Belly Buster    6 年前