首页 > 解决方案 > 如何使用等于和按日期 ASC 和 DESC 排序为 mongoDB 创建有效索引

问题描述

在我的数据库中,我想创建一些索引来帮助我更快地搜索如下内容:

db.getCollection('mycoll').find( {product: {$eq: "bread"}}).sort({date: 1})
db.getCollection('mycoll').find( {product: {$eq: "bread"}}).sort({date: -1})

在我阅读的文档中:

例如,索引键模式 { a: 1, b: -1 } 可以支持对 { a: 1, b: -1 } 和 { a: -1, b: 1 } 的排序,但不支持对 { a: - 1, b: -1 } 或 {a: 1, b: 1}。

但我只想对一个字段-日期进行排序。如何为此创建最佳索引?

标签: databasemongodbnosql

解决方案


https://docs.mongodb.com/manual/tutorial/sort-results-with-indexes/#sort-and-index-prefix内容如下:

如果排序键对应索引键或索引前缀,MongoDB 可以使用索引对查询结果进行排序。复合索引的前缀是由索引键模式开始处的一个或多个键组成的子集。

索引{date:1, product:1}将支持这两个查询。


推荐阅读