Get the duplicate value on DuplicateKeyError
pymongo, python, python-2.7
Solution
In dev version of `pymongo` (2.7) you can check with `error_document` property:
try:
db.coll.insert({name: 'some_value'})
except pymongo.errors.DuplicateKeyError, e:
print e.error_document
As far as I know, in 2.6 and earlier versions, all info except error `msg` and `code` is discarded.
Problem
In pymongo, when a `DuplicateKeyError` caught, what's the proper way to find out the duplicate value behind the the exception? Currently I do this ``` try: db.coll.insert({key: ['some_value', 'some_value_1']}) except pymongo.errors.DuplicateKeyError, e: dups = re.findall(r'\{\ +:\ +"(.*)"\ +\}$', e.message) if len(dups) == 1: print dups[0] ``` It seems to work, but is there any easier way, like ``` try: db.coll.insert({key: ['some_value', 'some_value_1']}) except pymongo.errors.DuplicateKeyError, e: print e.dup_val ``` EDIT It's a concurrent app, so check duplicates before insert might fail. The field is an array, so it's hard to find out which one is the duplicate value.