【MongoDB】索引

编程入门 行业动态 更新时间:2024-10-28 00:15:21

【MongoDB】<a href=https://www.elefans.com/category/jswz/34/1771159.html style=索引"/>

【MongoDB】索引

一、准备工作

这里准备一些学生数据

db.students.insertMany([{ _id: 1,  name: "张三", age: 20, class: { id: 1, name: "1班" }},{ _id: 2,  name: "李四", age: 22, class: { id: 2, name: "2班" }},{ _id: 3,  name: "王五", age: 24, class: { id: 3, name: "3班" }},
]);

二、创建复合索引

1、创建索引

db.students.createIndex({ age: 1, name: 1 });

上面创建了age、name字段的复合索引,其中1代表的是正序排序,-1代表的是倒序排序

复合查询中可以定义多个字段(最多不能超过32个字段)作为索引,但是在查询时只有使用携带第一个索引字段作为查询条件时才会使用当前索引

2、查询索引

db.students.getIndexes();

结果如下:

可以看到多了一个名称为age_1_name_1的索引

三、示例1:使用姓名和年龄查询

1、执行查询

db.students.find({ age: { $gt: 21 }, name: '李四' 
});

结果如下:

2、执行过程

db.students.find({ age: { $gt: 21 }, name: '李四' 
}).explain();

结果如下:

可以看到查询过程中会使用到索引名称为age_1_name_1的索引(查询时使用了age字段)

四、示例2:使用年龄查询

1、执行查询

db.students.find({ age: { $gt: 21 }
});

结果如下:

2、执行过程

db.students.find({ age: { $gt: 21 }
}).explain();

结果如下:

可以看到查询过程中会使用到索引名称为age_1_name_1的索引(查询时使用了age字段)

五、示例3:使用姓名查询

1、执行查询

db.students.find({ name: '李四' 
});

结果如下:

2、执行过程

db.students.find({ name: '李四' 
}).explain();

结果如下:

可以看到查询过程中未使用到索引名称为age_1_name_1的索引(查询时未使用age字段)

六、示例4:使用年龄和班级查询

1、执行查询

db.students.find({ age: { $gt: 21 }, 'class.id': 3
});

结果如下:

2、执行过程

db.students.find({ age: { $gt: 21 }, 'class.id': 3
}).explain();

结果如下:

可以看到查询过程中会使用到索引名称为age_1_name_1的索引(查询时使用了age字段)

更多推荐

【MongoDB】索引

本文发布于:2023-11-16 13:48:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1623736.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   MongoDB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!