商城网站建设正规公司,周村网站制作哪家好,wap建站程序哪个好,重庆建设工程施工安全管理平台MongoDB支持在集合文档中的任意字段上创建索引#xff0c;默认情况下所有的集合都有一个_id字段的索引#xff0c;用户和应用可以新增索引用于查询和操作。
一、准备工作
这里准备一些学生数据
db.students.insertMany([{ _id: 1, name: 张三, age: 20, clas…MongoDB支持在集合文档中的任意字段上创建索引默认情况下所有的集合都有一个_id字段的索引用户和应用可以新增索引用于查询和操作。
一、准备工作
这里准备一些学生数据
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班 }},
]);二、查询索引
db.students.getIndexes();
上面我们查询了students集合中的索引列表
查询结果如下
[ { v: 2, key: { _id: 1 }, name: _id_ } ]
默认情况下students集合中存在一个_id字段的索引
三、创建索引
1、创建索引
db.students.createIndex({age: 1});
上面创建了age字段的正序索引其中1代表的是按照age的值正序排序的索引如果是-1代表的是按照age的值倒序排序的索引
2、查询索引
db.students.getIndexes();
结果如下
[{ v: 2, key: { _id: 1 }, name: _id_ },{ v: 2, key: { age: 1 }, name: age_1 }
]可以看到多了一个名称为age_1的索引
3、执行查询
db.students.find({age: {$gt: 21}
})结果如下
[{ _id: 2, name: 李四, age: 22, class: { id: 2, name: 2班 } },{ _id: 3, name: 王五, age: 24, class: { id: 3, name: 3班 } }
]4、查询过程
db.students.find({ age: { $gt: 21 } }).explain();
结果如下 可以看到查询过程中会使用到索引名称为age_1的索引
四、创建内部文档索引
1、创建索引
db.students.createIndex({class.name: -1});
上面创建了class字段下name字段的倒序索引其中-1代表的是按照class字段下name字段的值倒序排序的索引如果是1代表的是按照class字段下name字段的值正序排序的索引 注意由于是内部文档字段的引用中间需要使用符号(.)进行分割索引key值两侧我们需要加上单引号 2、查询索引
db.students.getIndexes();
结果如下
[{ v: 2, key: { _id: 1 }, name: _id_ },{ v: 2, key: { age: 1 }, name: age_1 },{ v: 2, key: { class.name: -1 }, name: class.name_-1 }
]可以看到多了一个名称为class.name_-1的索引
3、执行查询
db.students.find({ class.name: 1班})
结果如下
[ { _id: 1, name: 张三, age: 20, class: { id: 1, name: 1班 } } ]
4、查询过程
db.students.find({ class.name: 1班}).explain();
结果如下 可以看到查询过程中会使用到索引名称为class.name_-1的索引