есть одним запросом поменять, к примеру:
— у документа с id 5 переменные last_name и first_name на соответствующие id 5
— у документа с id 6 переменные last_name и first_name на соответствующие id 6
— у документа с id 7 переменные last_name и first_name на соответствующие id 7 и тд
Нормальный ответ - нет, ненормальный - апдейт с агрегацией с $switch
А как по нормальному можно это реализовать? Если к примеру одновременно надо обновить 100 или даже 1000 юзеров?
структура у документов какая? тут не гадалки собрались ;)
Ну взять и реализовать, никакой магии собрать пайп для агрегации нет
Можно. ChatGPT может облегчить. Но ваш запрос придется несколько пересказывать)
Но лучше сделайте по апдейту на каждого юзера это и проще и быстрее
Я думаю быстрее одним запросом обновлять чем тысячей, ведь весь код будет ждать выполнения
да хоть и ждать, монга сама по себе плюс минус одинаково по времени отработает что тыщу одиночных апдейтов что один на тыщу параметров.
вроде же обновлять много доков нельзя пайплайном? только спец метод апдейт_мани, но он под капотом подключение поднимает и держит отправляя всё равно постепенно + синхронно, разве что модуль асинка использовать, тогда можно через N коннектов N обновлений заслать, всё выполнится точно быстрее, но это возможно только с пулом подключения поднятым гораздо заранее, иначе спавнить много коннектов тоже займёт время и неизвестно, что получится быстрее при какой текущей нагрузке и стоимостях каждой операции в пачке
да можно и много доков обновлять пайплайном, так же как и обычный агргеат с $merge по сути, только явно видно что там доки обновляются а не просто выборка
Обсуждают сегодня