MongoDB学习——索引

1.创建索引
这里contests是我建立的记录表,use_id是其中的字段。数字1表示键的索引按升序存储,-1表示键的索引按照降序方式存储。

db.cotests.ensureIndex({"user_id":1})

2.查询索引

db.contests.getIndexes()

可以看到查询后的结果,contests有两个索引,其中id索引是默认建立的,该索引唯一,且不能删除。
这里写图片描述

3.删除索引。从下面的图片可以看到,用db.contests.dropIndex({“user_id”:1})之后再次查询,只剩下应该索引了。
这里写图片描述

4.建立唯一索引
在一次数据库操作中,我把相同的数据insert了两次,事后计算才发现结果不对。为了避免这种情况,需要建立唯一索引。下面的命令就是给contests创建了一个唯一索引,有相同的user_id的数据无法被插入到数据库。

db.contests.ensureIndex({'user_id':1},{'unique':true})

但是在学习建立唯一索引的过程中,也遇到一些问题。刚开始我是直接使用了上面那条语句,然后报错。"E11000 duplicate key error collection: shiyanlou.contests index: user_id_1 dup key: { : 1.0 } 后来发现这是因为contests里面已有的的user_id的数据不唯一,所以我把contests删了,在插入数据之前就执行上面的语句。然后再执行insert。

按理说这样就没有问题了,我插入的数据还是contests原有的数据,也就是说,user_id是不唯一的。20条记录对应10个用户。本来我想的是,设置了唯一索引后,再次插入,数据库会自动排除那些user_id已存在的数据。所以按理说最后插入成功的数据应该是10条,但事实并非如此。我一次性插入的20条数据最后只导入了3条。找了很久的原因才发现是第四条数据的user_id和前面三条有重复的,所以后面数据都没有插入到数据库。

所以唯一索引的使用方法现在还是有点不清楚,后面会慢慢深入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值