前言
本机内容是关于 mongodb 学习的最后一节,经过前面4小节的学习,我相信里面的内容已经可以处理工作中 90%(保守估计) 的场景了,这节我们来了解一些 mongodb 优化的问题。
- 索引
我们知道,适合的索引对 mysql 数据查询效率的提升有非常大的作用,mongodb 也一样。
1.1 查看集合的索引
语法:db.集合.getIndexes();
db.user.getIndexes();
可以看到默认情况下,一个集合只有一个索引,字段是 _id。
1.2 新建索引
语法:db.user.createIndex({“字段名”:1或者-1}); 1表示升序, -1表示降序
// 为 user 集合的 sallary 字段添加一个索引(升序)
db.user.createIndex({"sallary":1});
这时再次查看索引信息,就可以看到我们刚刚新建的索引
// 创建唯一索引
db.集合.ensureIndex({"name":1},{"unique":true})
// 删除索引
db.集合.dropIndex({‘索引名称’:1})
// 建立复合索引
db.集合.createIndex({name:1,age:1})
这里就不一一贴图了,感兴趣的小伙伴可以自己去实验。
同 mysql 一样,索引是以空间换时间。集合中的数据越多,索引占用的硬盘空间就 越多。所以,只对必要的字段添加索引,不要对所有字段都添加索引。
-
批量插入效率由于单挑插入
这个也和 mysql 一样,大数据量的时候建议使用批量插入。 -
用插入数据代替更新数据 对于必需逐条更新大量数据的情况,也可以使用插入代替更新来提高性能。 基本逻辑是:把数据插入到另一个集合中,然后删除原来的集合,再把新集合改名为原来的集合。
-
使用 mongodb 实现分页
mongodb 的分页可以通过 limit + skip 来实现,其原理类似 mysql 的 limit start,pageSzie
// 查询第一页的数据
db.user.find().limit(5);
db.user.find().skip(0).limit(5);
// 查询第二页的数据
db.user.find().limit(5).skip(5);
分页查询通常会和排序一起使用
db.info.find().sort({"socre":1}).skip(5).limit(5);
简单的分页功能就是实现了,数据量小的时候没问题,数据量大了会有效率问题,其原因和 mysql 一样,解决的思路也是根据一个唯一自增字段,查询出它的值,然会以他为基准查询后面 pageSize 条记录。
关于 monogdb 的简单分享就到这里了,更多内容大家可以关注查询 www.mongodb.com
今天的内容就到这里了,我们下节见。
由于本人也是处于学习阶段,所有内容是看过资料以后自己实验得出,如有不妥之处还望各位批评指正,在下感激不尽。