Mongo中唯一索引\复合索引

发布时间 2023-06-29 20:28:26作者: jiang_jiayun

Mongo中唯一索引\复合索引

image-20220728011747328

唯一索引

在默认情况下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();