Docs 菜单
Docs 主页
/ /

复合索引

复合索引保存对集合文档中多个字段的引用,从而提高查询和排序性能。

创建复合索引时,必须指定以下详细信息:

  • 要在其上创建索引的字段

  • 每个字段的排序顺序(升序或降序)

本指南中的示例使用 Atlas示例数据集sample_mflix数据库中的 movies集合。要从Ruby应用程序访问权限此集合,请创建一个连接到Atlas 集群的Mongo::Client对象,并将以下值分配给 databasecollection 变量:

database = client.use('sample_mflix')
collection = database[:movies]

要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅Atlas入门指南。

使用 create_one 方法创建复合索引。 以下示例按降序对 runtime字段创建索引,并按升序对 year字段创建索引:

collection.indexes.create_one({ runtime: -1, year: 1 })

您可以通过列出集合中的索引来验证索引是否已创建。您应该会在列表中看到 runtimeyear 的索引,如以下输出所示:

puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"runtime": -1, "year": 1}, "name": "runtime_-1_year_1"}

以下是在 runtimeyear 字段上创建的索引涵盖的查询示例:

filter = { '$and' => [
{ runtime: { '$gt' => 90 } },
{ year: { '$gt' => 2005 } }
] }
doc = collection.find(filter).first
if doc
puts doc.to_json
else
puts "No document found"
end
{"_id":...,"runtime": 91,...,"title": "Monster House",...,"year": 2006,...}

要查看演示如何管理索引的可运行示例,请参阅 通过使用索引优化查询。

要学习;了解有关复合索引的更多信息,请参阅MongoDB Server手册中的复合索引

要进一步了解本指南所讨论的任何方法,请参阅以下 API 文档:

后退

单个字段

在此页面上