mongodb聚合框架中的性能下降

时间:2018-10-06 18:17:33

标签: mongodb aggregation-framework mongodb-indexes

我正在使用mongodb 3.6.8。

我有一个集合(称为states),其中包含一个ObjectId字段(sensor_id),一个date,以及其他一些字段。 我在集合上创建了复合索引:

db.states.createIndex({ "sensor_id" : 1, "date" : 1 });

我正在使用具有匹配阶段的聚合框架,例如:

{ 
  "$match" : {
    "sensor_id" : { "$oid" : "5b8fd62c4f0cd13c05296df7"},
    "date" : { 
        "$gte" : { "$date" : "2018-10-06T04:19:00.000Z"}, 
         "$lt" : { "$date" : "2018-10-06T10:19:09.000Z"}
    }
  }
}

我的问题:随着状态集合变大,即使添加的文档不在匹配过滤器的日期范围之外,管道聚合也越来越慢。 使用此索引,我真的希望性能随着集合的增加而不会有太大变化。

其他信息:

  • states集合没有太多文档(约200,000个),其中约20,000个是由上述过滤器匹配的。
  • 集合(和其他集合)中的索引只有几兆字节,很容易装入内存。
  • 聚合管道不会在数据库中插入任何文档。

有人可以建议我做些什么,以解释随着馆藏的增长(在$ match的日期范围之外的新文档)性能急剧下降的情况吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

已解决。随着时间的流逝,开发的另一个阶段是处理更多数据。索引没问题。