有没有办法在 mongodb 中指定数据的自然排序,类似于主索引如何在 RDBMS 表中对数据进行排序?
我的用例是我的所有查询都返回按日期字段排序的数据,比如生日。根据MongoDB: Sorting and Natural Order,标准(无上限)集合的自然顺序大致是插入顺序,但不能保证。这意味着在检索数据后需要进行排序。
有没有办法在 mongodb 中指定数据的自然排序,类似于主索引如何在 RDBMS 表中对数据进行排序?
我的用例是我的所有查询都返回按日期字段排序的数据,比如生日。根据MongoDB: Sorting and Natural Order,标准(无上限)集合的自然顺序大致是插入顺序,但不能保证。这意味着在检索数据后需要进行排序。
如果您正在寻找类似于 RDBMS 中的主索引的东西,请按 _id 排序。由于 _id 以时间戳为前缀,因此将大致为插入顺序。如果您尝试使用 $natural 顺序,它将导致它丢失索引。
我想如果没有索引的帮助,很难实现你想要的。为了支持分片,MongoDB 中的 _id 字段根据创建文档时的时间戳取值。因此,与 RDBMS 表中的标识列不同,您不能让它们单调增加。如果您的所有查询返回按出生日期排序的文档,我认为您必须在 Birthdate 列上创建一个索引。创建索引后,查询变得足够高效。
请参阅:
MongoDB capped collection and monotonicly increasing index
另外,我要补充一点,您应该考虑使用文档 ID 中的内置时间戳,而不是依赖单独的日期字段,因为它允许您存储更少的数据并删除索引。
杰森·蒙戈总部