Ответ агрегатной функции mongodb с длительным временем ожидания - PullRequest
0 голосов
/ 26 марта 2020

Функция агрегирования MongoDB занимает много времени, т. Е. Минуты, для выполнения операции внутри функции. Мне нужно выполнить этот запрос как можно быстрее. пожалуйста, дайте ваше предложение. Я, кто-то дает мне хорошее решение, я буду очень благодарен.

exports.finddate = (req, res) => {
     var a=req.query.osm_start_node_id;
     var b= req.query.osm_end_node_id;
     var num=parseInt(a);
     var num1=parseInt(b);
     console.log(a);
     var date1=req.query.utc_timestamp;
   console.log(date1);
speeddata.aggregate([{ $sort: {"properties.osm_start_node_id":1,_id:1} },
{ $match:{'osm_start_node_id': num,'osm_end_node_id':num1,'utc_timestamp':{$gte:date1[0],$lte:date1[1]}}},

    {$group:{_id: {
        day: { $dayOfWeek:{ $dateFromString: {
        dateString: "$utc_timestamp"
    } } }},
    meanspeed:{$avg:{$round:["$speed_mph_mean",0]}}}}

]).allowDiskUse(true)
  .then(stable => {

      if(!stable) {
          return res.status(404).send({
              message: "record not found " + req.query.osm_start_node_id
          });            
      }
      res.send(stable);
      console.log(stable);
  }).catch(err => {
      if(err.kind === 'osm_start_node_id') {
          return res.status(404).send({
              message: "record not found " + req.query.osm_start_node_id
          });                
      }
      return res.status(500).send({
          message: "something wrong with name " + req.query.osm_start_node_id
      });
  });
 };
...