Я просто модернизировал свой MongoDB и PyMongo до последней версии 3.2.1, чтобы иметь возможность использовать UpdateResult объект после вызова update_one(). Но почему-то возвращенный объект имеет одно поле, содержащее AttributeError.update_one PyMongo (в) возвращает UpdateResult с AttributeError
Взгляните на мои Pycharm screen. Вы можете видеть, что _UpdateResult__acknowledged
'Traceback (most recent call last):
File "/opt/pycharm-community-5.0.4/helpers/pydev/pydevd_resolver.py", line 191, in _getPyDictionary
attr = getattr(var, n)
AttributeError: _UpdateResult__acknowledged'
Это вызывает у меня проблемы, так как я пытаюсь поймать все исключения и каждый раз, когда мне нужно использовать update_one() в моем коде я получаю это исключение.
Это фрагмент моего кода:
QUERY = {id: '1234'}
try:
record = mongoCollection.find_one(QUERY)
if record is None:
print 'Add new Record'
else:
updateResult = mongoCollection.update_one(
QUERY,
{'$addToSet': {'info': getInfo()}}
)
if updateResult['modified_count'] == 1:
mongoCollection.update_one(
QUERY,
{'$inc': {'infoCount': 1}}
)
print 'Record exists, updating if needed'
except:
print 'Failed to add/update'
К счастью, мне удалось найти обходной путь, который не вызывает это исключение будет поднят. Вместо использования update_one(), я могу использовать устаревшую функцию обновления() который возвращает только RAW результат от MongoDB, а затем вместо сравнения updateResult [ «modified_count»], я могу просто сравнить updateResult [» nModified ']. ?
Но это, безусловно, не рекомендуется использовать устаревшие функции ... :(
Любые мысли