MongoDB聚合查询执行缓慢

时间:2018-08-27 06:05:31

标签: mongodb mongodb-query

  

我正在对集合的大小执行以下聚合查询:
  1:具有19382365文档的all_api
  2:具有8250124文档的edge_api
  查询:

db.getCollection('edge_api').aggregate([{
    $match: {
      state: {
        $eq: 'rj'
      }
    }
  },
  {
    $lookup: {
      from: "all_api",
      localField: "_id",
      foreignField: "edge_id",
      as: "road_speed"
    }
  },
  {
    $unwind: {
      preserveNullAndEmptyArrays: true,
      path: "$road_speed"
    }
  },
  {
    $project: {
      road_code: "$road_code",
      speed: {
        $switch: {
          branches: [{
              case: {
                $gt: ["road_speed.saving_time", 1535349227]
              },
              then: "$road_speed.spd_cur"
            },
            {
              case: {
                $lte: ["road_speed.saving_time", 1535349227]
              },
              then: "$road_speed.spd_pro"
            }
          ]
        }
      }
    }
  },
  {
    $match: {
      speed: {
        $ne: null
      }
    }
  },
  {
    "$group": {
      "_id": "$_id",
      "road_code": {
        $first: "$road_code"
      },
      "speed": {
        "$avg": "$speed"
      }
    }
  }
], {
  allowDiskUse: true,
  cursor: {
    batchSize: 10000000000
  }
});

执行大约需要40到50秒。
如果是api响应,则不可接受。
有什么我可以做的,以使此查询性能受到打击。
如果有人对此有任何建议,请提出建议。

谢谢。

0 个答案:

没有答案