• mongodb入门(五)


    前言

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

    1. 索引
      我们知道,适合的索引对 mysql 数据查询效率的提升有非常大的作用,mongodb 也一样。
      1.1 查看集合的索引
      语法:db.集合.getIndexes();
    db.user.getIndexes();
    
    • 1

    在这里插入图片描述
    可以看到默认情况下,一个集合只有一个索引,字段是 _id。

    1.2 新建索引
    语法:db.user.createIndex({“字段名”:1或者-1}); 1表示升序, -1表示降序

    // 为 user 集合的 sallary 字段添加一个索引(升序)
    db.user.createIndex({"sallary":1});
    
    • 1
    • 2

    这时再次查看索引信息,就可以看到我们刚刚新建的索引
    在这里插入图片描述

    // 创建唯一索引
    db.集合.ensureIndex({"name":1},{"unique":true})
    // 删除索引
    db.集合.dropIndex({‘索引名称’:1})
    // 建立复合索引
    db.集合.createIndex({name:1,age:1})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里就不一一贴图了,感兴趣的小伙伴可以自己去实验。

    同 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);
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    // 查询第二页的数据
    db.user.find().limit(5).skip(5);
    
    • 1
    • 2

    在这里插入图片描述
    分页查询通常会和排序一起使用

    db.info.find().sort({"socre":1}).skip(5).limit(5);
    
    • 1

    在这里插入图片描述

    简单的分页功能就是实现了,数据量小的时候没问题,数据量大了会有效率问题,其原因和 mysql 一样,解决的思路也是根据一个唯一自增字段,查询出它的值,然会以他为基准查询后面 pageSize 条记录。
    关于 monogdb 的简单分享就到这里了,更多内容大家可以关注查询 www.mongodb.com
    今天的内容就到这里了,我们下节见。

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

  • 相关阅读:
    【TcaplusDB知识库】TcaplusDB新增机型介绍
    Android修改开机动画
    Java-基于SSM的学生综合考评管理系统
    快速认识什么是:Docker
    【软件测试】毕业打工两年,辞职一年后转行月薪18K,软件测试让我发起了第一春......
    表达式的动态解析和计算,Flee用起来真香
    java: 警告: 源发行版 17 需要目标发行版 17
    Element UI 添加自定义图标
    基于Yolov8的野外烟雾检测(1)
    【分布式存储】聊一下分布式存储中分片机制
  • 原文地址:https://blog.csdn.net/hxj413977035/article/details/126112001