То, что вы делаете, мне кажется правильным.
Если вы хотите обновить пользователя с помощью одной операции записи, наиболее распространенной альтернативой является не сохранять пользователей в поле массива с их ролей, но сохранить пользователя + роли в поле карты:
"chatUserRoles": {
"1": "Admin",
"2": "General",
"3": "General"
}
С этой структурой вы можете обновить определенного c пользователя с точечной нотацией:
"chatUserRoles."+updatedUser.dictionary.userId: updatedUser.dictionary.role
Или как буквальный текст:
"chatUserRoles.1": "General"