Mongo中唯一索引\复合索引
唯一索引
在默认情况下mongdb的索引的值是可以相同的,创建唯一索引之后,数据库会在插入数据的时候检查创建索引域的值是否存在,如果存在则不会插入该条数据,但是创建索引仅仅能够提高查询速度,同时降低数据库的插入速度
添加唯一索引的语法
db.集合名.createIndex({"字段名":1}, {"unique":true})
利用唯一索引进行数据去重
根据唯一索引指定的字段的值,如果相同,则无法插入数据
db.person.createIndex({"name":1}, {"unique":true})
db.person.insert({name: 'test10000'})
复合索引
在进行数据去重的时候,可能用多个字段来做数据的唯一性,这个时候可以考虑建立复合索引来实现。
建立复合索引的语法:
db.collection_name.createIndex({字段1:1,字段2:1})
建立索引注意点
-
根据需要选择是否需要建立唯一索引
-
索引字段是升序还是降序在单个索引的情况下不影响查询效率,但是带复合索引的条件下会有影响
-
数据量巨大并且数据库的读出操作非常频繁的时候才需要创建索引,如果写入操作非常频繁,创建索引会影响写入速度
//切换数据库
use bjsxt;
//查看索引
db.person.getIndexes();
//创建索引
db.person.createIndex({'name':1},{'unique':true});
//删除索引
db.person.dropIndex({'name':1});
//有重复的,报错
db.t1.insert({'name':'test100'});
//无重复,运行
db.t1.insert({'name':'test1000000'});
//复合索引
db.person.createIndex({'name':1,'age':1});
db.t1.find().count();