我正在对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]不起作用?
谢谢!