【发布时间】:2014-11-10 16:43:53
【问题描述】:
所以,我在MongoDB 中有以下模型中的数据:
- 默认
_id - 一个不同的
uniq_id(每个uniq_id会有多个文档) - 一个合适的时间戳值,文档的 ts
现在,在我的代码中,我希望为给定的uniq_id 提取最旧的 100 个文档。所以我运行这个查询:
db.students.find({uniq_id:"xyz"}).limit(100).sort({ts:1})
我现在的问题是:
limit()是如何工作的?它会使用默认的_id来获取前100 个文档吗?换句话说,如果我有 1100 个来自find()的文档,我知道limit(100)能够提取文档 1-100。它是通过使用默认的_id索引来做到这一点的吗?要根据时间戳对其进行排序(再次强调我想要最旧的 100 个文档),我是否需要在
uniq_id和时间戳上设置一个复合索引,或者最好在其上创建两个单一索引uniq_id和时间戳分开?
我假设两个单字段索引可以完成这项工作。有人可以帮我解决这个问题吗?
提前致谢。
【问题讨论】: