MongoDB玩转索引(四)
一、索引
1.索引提高查询速度,降低写入和修改速度,权衡常用的查询字段,不必在太多列上建索引
2. 在mongodb中,索引可以按字段升序/降序来创建,便于排序
3. 默认是用btree(二叉树)来组织索引文件,2.4版本以后,也允许建立hash索引.
二、创建索引(索引类型)
1、创建普通单列索引语法:db.collection.ensureIndex({field:1/-1}); 1是升序 -1是降序
2、查看当前索引: db.collection.getIndexes();
3、删除索引:db.collection.dropIndex({filed:1/-1});
4、删除所有索引:db.collection.dropIndexes();
5、创建多列索引:db.collection.ensureIndex({field1:1/-1, field2:1/-1});
6、创建子文档索引:db.collection.ensureIndex({filed.subfield:1/-1});
①、创建子文档数据
②、查询子文档的数据,获取子文档属性需要使用字段名称点上属性名称。如下查询area为zhongguo的子文档数据:
③、创建子文档索引
三、创建索引(索引性质)
1、唯一索引:db.collection.ensureIndex({filed.subfield:1/-1}, {unique:true});
2、稀疏索引
①、稀疏索引的特点------如果针对field做索引,针对不含field列的文档,将不建立索引.
②、与之相对,普通索引,会把该文档的field列的值认为NULL,并建索引.
③、创建稀疏索引语法:db.collection.ensureIndex({field:1/-1},{sparse:true});
在sex列上创建索引,由于后面两条数据没有sex,所以采用稀疏索引创建索引。
3、哈希索引:db.collection.ensureIndex({file:’hashed’});
4、重建索引
①、一个表经过很多次修改后,导致表的文件产生空洞,索引文件也如此.可以通过索引的重建,减少索引文件碎片,并提高索引的效率.
②、索引重建语法:db.collection.reIndex()