Overview
多键索引可提高对数组值字段的查询性能。您可以使用create_one 方法和与创建 单字段索引相同的语法在集合上创建多键索引。
创建多键索引时,必须指定以下详细信息:
要在其上创建索引的字段
每个字段的排序顺序(升序或降序)
样本数据
本指南中的示例使用 Atlas示例数据集的 sample_mflix数据库中的 movies集合。要从Ruby应用程序访问权限此集合,请创建一个连接到Atlas 集群的Mongo::Client对象,并将以下值分配给 database 和 collection 变量:
database = client.use('sample_mflix') collection = database[:movies]
要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅Atlas入门指南。
创建多键索引
使用 create_one 方法创建多键索引。 以下示例在 cast字段上按升序创建索引:
collection.indexes.create_one({ cast: 1 })
验证索引创建
您可以通过列出集合中的索引来验证索引是否已创建。您应该会在列表中看到 cast 的索引,如以下输出所示:
puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"cast": 1}, "name": "cast_1"}
示例查询
以下是在 cast字段上创建的索引涵盖的查询示例:
filter = { cast: { '$all' => ['Aamir Khan', 'Kajol'] } } doc = collection.find(filter).first if doc puts doc.to_json else puts "No document found" end
{"_id":...,"title":"Fanaa",...,"cast": ["Aamir Khan", "Kajol", "Rishi Kapoor", "Tabu"],...}
更多信息
要查看演示如何管理索引的可运行示例,请参阅使用索引优化查询。
要学习;了解有关多键索引的更多信息,请参阅MongoDB Server手册中的多键索引。
API 文档
要进一步了解本指南所讨论的任何方法,请参阅以下 API 文档: