MongoDB - 没有索引的sort()数据太多。完整系列

时间:2015-03-23 20:23:13

标签: node.js mongodb

我使用Mongoose for Node.js与mongo驱动程序接口,所以我的查询如下:

db.Deal
    .find({})
    .select({
        _id: 1,
        name: 1,
        opp: 1,
        dateUploaded: 1,
        status: 1
     })
     .sort({ dateUploaded: -1 })

得到:没有索引的sort()数据太多。添加索引或指定较小的限制

Deal集合中的文档数量非常少,可能约为500个 - 但每个文档都包含许多嵌入文档。上面查询中返回的字段都是原始字段,即不是文档。

我目前没有设置除默认设置之外的任何索引 - 直到现在我都没有遇到过任何问题。我应该尝试添加复合键:

{ _id: 1, name: 1, opp: 1, status: 1, dateUploaded: -1 }

或者是否有更智能的方法来执行查询?第一次使用mongodb。

1 个答案:

答案 0 :(得分:2)

来自limits and thresholds上的MongoDB文档:

  

如果排序操作中所有文档的总大小加上小的开销小于32兆字节,MongoDB将只返回没有索引的字段的排序结果。

可能所有嵌入的文档都太多,如果要运行相同的查询,则应在排序字段dateUploaded上添加索引。

否则,您可以限制查询并开始对结果进行分页。