mongodb入门(五)

本文详细介绍了MongoDB中的索引管理,包括创建、维护和复合索引,强调了合理使用索引来提升查询效率。此外,讨论了批量插入、数据更新策略以及使用limit+skip实现分页的方法,针对大数据场景给出优化建议。
摘要由CSDN通过智能技术生成

前言

本机内容是关于 mongodb 学习的最后一节,经过前面4小节的学习,我相信里面的内容已经可以处理工作中 90%(保守估计) 的场景了,这节我们来了解一些 mongodb 优化的问题。

  1. 索引
    我们知道,适合的索引对 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 一样,索引是以空间换时间。集合中的数据越多,索引占用的硬盘空间就 越多。所以,只对必要的字段添加索引,不要对所有字段都添加索引。

  1. 批量插入效率由于单挑插入
    这个也和 mysql 一样,大数据量的时候建议使用批量插入。

  2. 用插入数据代替更新数据 对于必需逐条更新大量数据的情况,也可以使用插入代替更新来提高性能。 基本逻辑是:把数据插入到另一个集合中,然后删除原来的集合,再把新集合改名为原来的集合。

  3. 使用 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
今天的内容就到这里了,我们下节见。

由于本人也是处于学习阶段,所有内容是看过资料以后自己实验得出,如有不妥之处还望各位批评指正,在下感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不务正业的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值