Зачем мы сначала получаем объект для чтения, а потом ещё раз для записи?
Ну, типа не открываем объект на запись без необходимости. На чтение быстрее открывается, при этом объект не блокируется для других "читателей". Но это уже тонкости, конечно.
Нельзя сразу открыть его на запись?
Можно и так, конечно. Но надо понимать, что если объект неподходящего типа, то было избыточное открытие его на запись. В 99% случаев, это, скорее всего, не приведёт ни к каким последствиям, кроме ухудшения быстродействия.
Или типа когда на запись, то читать нельзя, можно только писать?
Можно и писать и читать.
P.S. Если уж совсем по уму, то можно проверить тип объекта, не открывая его, по Id. Вот там как раз пригодятся RXClass и сравнение по ним. И тогда можно будет проверить тип объекта, и если он подходящий - сразу открывать на запись и изменять. Это было бы красивое решение, ятд.
P.P.S И ещё, в видео забыл сказать. Если у нас есть ObjectId, то из него мы можем получить Database и открыть транзакцию через неё. Не надо получать активный документ.