MongDB 支持丰富的查询,同时支持灵活的索引创建操作,例如支持升序/降序索引,组合索引,Multikey Index 等等,今天仅演示索引的相关操作,如创建,查看等。
MongDB 创建索引的命令为 ensureIndex,这个命令有两个参数,如下所示:
- keys: 包括索引的列以及索引的顺序(升序/降序);
- optins: 创建索引的选项,可选参数,例如 background,unique,name 等。
以下是具体的演示过程:
1 创建测试表
1 |
[mongo@redhatB ~]$ mongo |
备注:创建测试表并插入 10000 条数据。并插入 100001 条数据。
2 查看现有索引
1 |
> db.test_4.getIndexes(); |
备注: 返回了一条索引项,包括四个元素,解释如下:
v: 索引的版本号,这由 mongod 的版本决定,2.0 版本之前的 mongod 这个值为 0,
2.0 或之后的 mongod 的版本这个值为 1。
key: 索引项名称以及索引的排序规则(升序/降序)
ns: 索引所在的集合的名称
name: 索引名称
3 创建索引
1 |
> db.test_4.ensureIndex({skyid:1},{name:"idx_test_4_skyid"}); |
备注:上面指定了 “name” 可选参数,即指定索引名称。
4 再次查看索引
1 |
> db.test_4.getIndexes(); |
备注:返回的结果为两条索引项。
5 查询数据库里所有索引
1 |
> db.system.indexes.find({"ns":"skytf.test_4"}); |
备注: system.indexes 存储了当前数据库所有的索引信息。
由于创建索引过程会阻塞其它数据库操作,建议以后台方式创建索引,即增加 “background” 可选参数。
6 删除索引
1 |
> db.test_4.dropIndex('idx_test_4_skyid'); |
备注:删除表 test_4 的 idx_test_4_skyid 索引。
7 以后台方式创建索引
1 |
> db.test_4.ensureIndex({skyid:1},{name:"idx_test_4_skyid",background:true}); |
8 再次查看索引
1 |
> db.test_4.getIndexes();db.test_4.getIndexes(); |
9 总结
索引维护操作还有很多,以及索引创建过程中对其它操作的影响还没深入了解,今天先学习到这。
10 参考
http://docs.mongodb.org/manual/reference/method/db.collection.getIndexes/#db.collection.getIndexes
http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/#db.collection.ensureIndex
http://docs.mongodb.org/manual/administration/indexes/
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/237917.html