С помощью mongodb-go-driver как получить внутренние исключения - PullRequest
3 голосов
/ 06 июля 2019

Когда я вставляю в коллекцию с новым драйвером MongoDB Go , я получаю двойное исключение, которое я вижу при его выбросе. (mongo.WriteException) несколько ошибок записи:

[{ошибки записи: [{E11000 коллекция повторяющихся ошибок ключа: fhir.documents index: enterprise_id_1 dup ключ: {: "Cache-37",: "102" }}]}, {}]

Как мне добраться до этой внутренней ошибки, чтобы программно узнать, что это был дубликат ключа, и я могу справиться с этим?

1 Ответ

0 голосов
/ 17 июля 2019

Я наконец узнал как.Должно быть намного проще получить основные коды ошибок!При обнаружении ошибки я проверяю количество найденных ошибок и в настоящее время беспокоюсь только о первой.Хотя первоначальная ошибка говорит о множественных ошибках, она имеет только одну.Это действительно только для поиска ошибок вставки дубликата или поиска ошибок не найдены.Если есть более простой способ, я хотел бы знать.До тех пор, это то, что я использую, и это прекрасно работает.Дубликат, кстати, 11000.

"Вставка с сеансом завершилась неудачно: несколько ошибок записи: [{ошибки записи: [{E11000 Коллекция ошибок дублирующегося ключа: test.users index: roi_id_1 dup key: {: \" 1\ "}}]}, {}] \ n"

        var merr mongo.WriteException
        merr = err.(mongo.WriteException)
        log.Errorf("Number of errors: %d", len(merr.WriteErrors))
        errCode := merr.WriteErrors[0].Code
...