想象一下,你有一个古董店的商品信息集。每份文件都有以下结构:
{
"id": 100,
"category": "furniture",
"price":1000,
"quantity": 10
}
你已经创建了这个索引:
db.goods.createIndex({price: 1, quantity: 1})
并执行了以下请求:
db.goods.find({quantity: {$gte: 2}, price: {$lt: 1000}}, {quantity: 1, id: 0})
以下查询将如何执行?
以下是选项:
将不使用索引,所有结果将直接从数据库中检索。
将使用索引,之后将从数据库中检索结果。
所需的结果将仅从索引中检索。
将使用索引,之后将从缓存中检索结果。
不会使用索引
复合索引中列出的字段的顺序很重要。索引将包含对文档的引用,这些文档首先按项目字段的值排序,在项目字段的每个值中,按库存字段的值排列。有关详细信息,请参见排序顺序。
除了支持在所有索引字段上匹配的查询外,复合索引还可以支持在索引字段前缀上匹配的搜索。也就是说,该索引支持对价格字段以及价格和数量字段的查询
参考