Я только недавно стал изучать MongoDB.
Решил написать функцию, которая каждый час из базы данных вытаскивает массив объектов пользователей, сравнивает по значению, которое ранее указано, и если значение превысило пороговую отметку, то совершает действие: повышает уровень и вычитает пороговое значение из переменной пользователя, отвечающее за опыт пользователя.
Суть вопроса: "Как реализовать это более оптимизированно, чтобы совершалось как можно меньше запросов к БД?"
Предполагаемая логика функции:
Вытащить массив с объектами пользователей,
Сверить с пороговым значением опыт каждого пользователя,
Если выше порогового, то повысить уровень на один, а у пользователя вычесть пороговое значение опыта.
Код, который я написал, он оказался нерабочим.
К ChatGPT не отправляйте, он использует старую версию MongoDB - 4.2. В версии 5.2 метод save() является устаревшим и нерабочим.
Код:
spoilerlet users = await await acc.find({});
users.forEach(async user => {
const requiredExperience = levelCurve[user.level];
if (user.exp >= requiredExperience) {
user.level += 1;
user.exp -= requiredExperience;
await acc.insert(user);
}
});