FieldValue.arrayUnion()
и FieldValue.arrayRemove()
работают только тогда, когда поле, указанное на верхнем уровне объекта обновления, само является списком. То, что вы делаете сейчас, предоставляя объект со списком, действительно заменяет весь список. Он не распознает существующее содержимое этого списка.
Вместо этого вы можете вызвать конкретное имя встроенного списка:
await transaction.update(docRef,
{'myMap.myArr': FieldValue.arrayUnion('myNewValue')},}
);
Обратите внимание на точечную запись для конкретного вызова списка.