Game {
leaderboard: number[]; // userId
}
Collection User {
userId: number;
points: number; // в данном случае не важно, может быть любое число
}
Мне нужен способ обновить коллекции User с помощью коллекции Game
Мне нужно пройтись по массиву leaderboard, сопоставить userId с User.userId и инкрементировать points (+1)
Я не хочу выгружать leaderboard в RAM (если проще: не хочу, чтобы массив данных инициализировался в JS), потому что коллекция может быть размером в миллион пользователей
Поэтому я ищу способ апдейта исключительно в среде mongo
Как лучше всего это сделать? Возможно есть какие-то похожие на firebase.transaction методы или через bulk?`
https://www.mongodb.com/docs/manual/core/map-reduce/
Если использовать aggregateion, то там нет функционала изменить данные в определенной коллекци, там через $out можно в новую коллекцию данные выгрузить
Мм, а как же $merge ?
Не знал т.к. не сталкивался с задачей как у него, но если даже бы знал, но подумал как её сделать подругому заместо использования $merge т.к. всякое может случиться в процессе слияния
Правила слияния строго определены
Обсуждают сегодня