Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB聚合查询执行速度慢_Mongodb_Mongodb Query - Fatal编程技术网

MongoDB聚合查询执行速度慢

MongoDB聚合查询执行速度慢,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在对大小为的集合运行以下聚合查询: 1:包含19382365个文档的所有api 2:带有8250124个文档的edge\u api 查询: 执行大约需要40到50秒。 在api响应的情况下,这是不可接受的。 我可以做些什么来提高查询的性能。 如果有人对此有任何建议,请提出。 谢谢。你有什么索引?For:all_api{“{u id”:1}{“节省时间”:1}{“edge\u id”:1}For:edge\u api{“{u id”:1}{“state”:1}你试过使用$explain吗?嗨,

我正在对大小为的集合运行以下聚合查询:
1:包含19382365个文档的所有api
2:带有8250124个文档的edge\u api
查询:

执行大约需要40到50秒。
在api响应的情况下,这是不可接受的。
我可以做些什么来提高查询的性能。
如果有人对此有任何建议,请提出。


谢谢。

你有什么索引?For:all_api{“{u id”:1}{“节省时间”:1}{“edge\u id”:1}For:edge\u api{“{u id”:1}{“state”:1}你试过使用$explain吗?嗨,Akrion,下面是这方面的查询计划:你能提供你的收藏样本吗?
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
  }
});