Задать вопрос
Ответы пользователя по тегу MongoDB
  • Большая нагрузка на процессор, что оптимизировать?

    @vitland Автор вопроса
    Спасибо за советы!
    Я пока нуб и без понятия, что такое профайлинг, как логгировать запросы и их интерпритировать. И на данном этапе в таком сложно разобраться.
    Пока же решил проблему изменив запрос к базе, убрал сравнение массивов. Производительность значительно подросла.

    function sendFilesByQuery(chatId, query) {
      User.findOne({ telegramId: chatId }).then((user) => {
        // фильтры на основе которых формируется запрос
        if (user.filter.time === 1) {
          time = { $gte: 2000 };
        }
        if (user.filter.time === 2) {
          time = { $gte: 2015 };
        }
        if (user.filter.pop === 1) {
          pop = { $lt: 71 };
        }
        if (user.filter.pop === 2) {
          pop = { $gt: 9 };
        }
    
        if (user.filter.time === 0) {
          delete query.year;
        }
        if (user.filter1.pop === 0) {
          delete query.viewed;
        }
    
        query = {
          type: query.type.toString(),
          viewed: pop,
          year: time,
    //Здесь отсеиваются просмотренные файлы
          _id: {
            $nin: watched, 
          },
        };
    
        File.find(query).then((file) => {
          rndfile = file[Math.floor(Math.random() * file.length)];
          let allfiles;
          let userfiles;
          switch (query.type) {
            case "1":
              userfiles = user.files1;
              allfiles = user.allfiles;
              break;
          }
    
          bot.sendDocument(chatId, rndfile.gif);
          if (!rndfile) {
            bot.sendMessage(chatId, "text");
          }
          if (userfiles1.length >= allfiles.length - 1) {
            clearfilesType(user.telegramId, query);
          }
        });
      });
    }
    Ответ написан
    Комментировать