zoukankan      html  css  js  c++  java
  • 2、MongoDB学习之索引的管理

    目标:实现索引的创建、查询、删除、explan管理等操作
    环境:
    > db.version()
    3.4.7
     
    索引创建满足的基本需求:
    1;索引提高查询速度
    2;在mongodb中,索引可以按自动列升序/降序来创建,便于排序
    3;默认是用btree来组织索引文件,2.4版本以后,也允许建立hash索引
     
    管理索引常用到的语法有:
    db.c1.createIndex(keypattern[,options])    #keypattern表示索引匹配的字段列,例如name:1 表示那么列升序建立索引,[,options]表示使用另一个字段列创建索引,从而组成复合索引
    db.c1.getIndexes()    #查看索引的语法,当还没有手动创建索引的时候,其实系统默认也会有索引列:_id_
    db.c1.find({name:'test10'}).explain()    #表示查询name列集合集值test10是否有创建索引
     
    一、索引的创建
    常规的索引创建方式有基本索引、复合索引、唯一索引三类。
    1、基本索引
    > db.c1.createIndex({newname:1})
    {
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
    }
    #由上可以看出创建了一个基本的单列索引
     
    2、复合索引的创建
    > db.c1.createIndex({newname:1,age:-1})
     
    3、唯一索引的创建
    唯一索引的主要功能就是只允许字段值唯一
    常用语法为:
    db.c1.ensureIndex(keypattern[,options]) - DEPRECATED, use createIndex() instead
    > db.c1.ensureIndex({num:1},{unique:true})

    成功示例

     
    二、索引的查看
    > db.c1.getIndexes()
     
    1;查看基本索引
     
     
    2;查看复合索引
     
     
     
    3;查看唯一索引
     
    三、explan索引验证
    创建索引主要是供加快查询速度的,基本索引创建之后,基于该列查询会加快速度。复合索引一般是由两个或者多个列做成索引值,如果是单列条件查询的话,最开始创建的字段列能够有效(也就是说复合索引创建后,程序单列查询会有索引效果),但是之后的字段列的索引查询是没有效果的。如果复合索引里面用到的查询条件都是创建的复合索引时的列,字段条件查询时变换位置也没关系
     
    使用方法:
    > db.c1.find({newname:'test5'},{age:5}).explain()
     

      #可以看到它的一个复合查询

     
     
    四、索引的删除
    常用的语法:
    db.c1.dropIndex(index)
     
    > db.c1.dropIndex({age:-1})
    { "nIndexesWas" : 6, "ok" : 1 }
    > db.c1.dropIndex({num:1})
    { "nIndexesWas" : 5, "ok" : 1 }
    > db.c1.dropIndex({name:1,age:-1})
    { "nIndexesWas" : 4, "ok" : 1 }
     
  • 相关阅读:
    Oracle 学习笔记 12 -- 序列、索引、同义词
    解决:设置中打开蓝牙,測试机不会自己主动搜索设备
    mysql 数据库查询最后两条数据
    jQuery中this与$(this)的差别
    Apache http server linux 安装过程说明
    Swift学习——Swift基础具体解释(一)
    CloudFoundry V2 单机版离线安装(伪离线安装)
    CF1119F Niyaz and Small Degrees
    2019-8-31-C#-如何引用-WshShell-类
    2019-8-31-C#-如何引用-WshShell-类
  • 原文地址:https://www.cnblogs.com/xiangys0134/p/7497164.html
Copyright © 2011-2022 走看看