1

有没有办法在 mongodb 中指定数据的自然排序,类似于主索引如何在 RDBMS 表中对数据进行排序?

我的用例是我的所有查询都返回按日期字段排序的数据,比如生日。根据MongoDB: Sorting and Natural Order,标准(无上限)集合的自然顺序大致是插入顺序,但不能保证。这意味着在检索数据后需要进行排序。

4

4 回答 4

1

我相信您指的是聚集索引,而不是主索引。

MongoDB 2.0 没有聚集索引功能,因此日期上的常规索引将是您检索的最有效选择。

使用 MongoDB 考虑磁盘上的物理顺序可能还为时过早。MongoDB 使用内存映射文件,因此根据您的工作集 + 查询 + RAM,您可能不需要像预期的那样频繁地从磁盘加载数据。

于 2012-07-17T07:18:30.990 回答
1

如果您正在寻找类似于 RDBMS 中的主索引的东西,请按 _id 排序。由于 _id 以时间戳为前缀,因此将大致为插入顺序。如果您尝试使用 $natural 顺序,它将导致它丢失索引。

于 2012-07-16T04:45:50.780 回答
0

我想如果没有索引的帮助,很难实现你想要的。为了支持分片,MongoDB 中的 _id 字段根据创建文档的时间戳取值。因此,与 RDBMS 表中的标识列不同,您不能让它们单调增加。如果您的所有查询返回按出生日期排序的文档,我认为您必须在 Birthdate 列上创建一个索引。创建索引后,查询变得足够高效。
请参阅:
MongoDB capped collection and monotonicly increasing index

于 2012-07-16T07:18:40.950 回答
0

另外,我要补充一点,您应该考虑使用文档 ID 中的内置时间戳,而不是依赖单独的日期字段,因为它允许您存储更少的数据并删除索引。

杰森·蒙戈总部

于 2012-07-16T04:52:59.530 回答