多键索引概述
多键索引(MultiKey Indexes)是一种特殊类型的索引,它允许MongoDB在文档的数组字段上进行高效的索引操作。当文档中的某个字段包含数组时,MongoDB会自动为数组中的每个元素创建索引条目,从而加快针对这些元素的查询速度。
创建测试数据集
为了演示多键索引的创建和使用,我们首先需要准备一些测试数据。这里,我们将创建一个名为classes的集合,其中包含两个班级的数据,每个班级都记录了学生的信息,信息以数组形式存储:
db.classes.insertMany([{"classname":"class1","students":[{"name":"jack","age":20},{"name":"tom","age":22},{"name":"lilei","age":25}]},{"classname":"class2","students":[{"name":"lucy","age":20},{"name":"jim","age":23},{"name":"jarry","age":26}]}])
创建与测试多键索引
接下来,我们将基于students数组中的age字段创建一个多键索引,并测试其效果:
// 创建索引
db.classes.createIndex({"students.age":1});
// 测试索引
db.classes.find({"students.age":30}).explain();
// 删除索引
db.classes.dropIndex({"students.age":1});
上述代码首先创建了一个基于students.age字段的升序索引,然后通过explain方法查看查询性能,最后删除了该索引。通过这种方式,我们可以评估多键索引对查询性能的影响。