Mongo需要太长时间才能按升序排序

时间:2015-08-03 17:35:22

标签: mongodb sorting

我正在对mongo集合进行查询,并希望按日期对它们进行排序,并按时间获取K最早的文档。我有两个日期:1和日期:-1索引(尽管其中任何一个都应该按升序或降序排序)。

Mongo按降序排序速度非常快[1]但是当我尝试按升序排序时它会永远排序[2]。

[1] db.collection.find(query).sort({date:-1}) //descending order 
[2]. db.collection.find(query).sort({date:1}) //ascending order

我尝试使用[1]并检索K最早的文件如下

[3] for i in range(K):
        print db.collection.find(query).sort(date,-1)[collection.count() - i]["date"]

但是,游标首先遍历collection.count() - K文档,然后才检索所需的文档,并且由于集合大小接近100,000而需要太长时间。

我也尝试过使用skip(),如下所示

[4] db.collection.find(query).sort(date,-1).skip(collection.count()-K)[0][date]

但这也不会改善时间复杂度。

这里的主要问题是mongo没有按升序对检索到的查询进行排序。如果[2]有效,我将不必费心[3]或[4]。任何人都可以建议为什么[2]不起作用?

谢谢!

0 个答案:

没有答案