• Mongo基础 索引的使用


    MongoDB中的索引和其他数据库索引类似,也是使用B-Tree结构。mongodb的索引是在collection级别上的,并且支持在任何列或者集合内的文档的子列中创建索引。

    所有的MongoDB集合默认都有一个唯一索引在字段“_id”上,如果应用程序没有为 “_id”列定义一个值,MongoDB将创建一个带有ObjectId值的列。(ObjectId是基于 时间、计算机ID、进程ID、本地进程计数器 生成的)

    MongoDB 同样支持在一列或多列上创建升序或降序索引。

    MongoDB还可以创建 多键索引、数组索引、空间索引、text索引、哈希索引,其属性可以是唯一性索引、稀疏性索引、TTL(time to live)索引。

    索引的限制:

    索引名称不能超过128个字符

    每个集合不能超过64个索引

    复合索引不能超过31列

    基本命令:

    >db.tab.ensureIndex({"name":1},{"name":"IX_name"},{"unique":true}) //创建索引名字叫IX_name的唯一索引
    
    >db.tab.getIndexes() //查看所有索引
    
    >db.tab.dropIndexes() //删除所有索引
    
    >db.tab.find({"name":"test"}).explain("executionStats") //执行结果分析 关注输出的如下数值:explain.executionStats.executionTimeMillis 耗时毫秒
    
    >db.tab.find({"name":"test"}).hint({"name":1}).explain("executionStats") //执行结果分析 索引提示,强制使用索引

    其他常用命令:

    db.tab.ensureIndex({"id":1})     //创建单列索引
    db.collection.createIndex( { "filed": sort } )    //filed :为键列
    db.collection.createIndex( { "filed": sort , "filed2": sort } )    //sort :为排序。1 为升序;-1为降序。
    
    db.system.indexes.find()    //查看索引
    
    db.tab.totalIndexSize();    //查看索引大小
    
    db.tab.reIndex()    //重建索引
    db.runCommand({reIndex:"tab"})
    
    db.tab.dropIndex(<indexname>)    //删除索引
    db.tab.dropIndex("id_1")    //<indexname>为getIndexes看到的索引名称
    db.tab.dropIndexes()    //删除所有索引(注意!)

    参考资料:http://www.runoob.com/mongodb/mongodb-indexing.html

  • 相关阅读:
    hdu 5918(强行水过去..正解KMP)
    hdu 5914(斐波拉契数列)
    hdu 5912(迭代+gcd)
    bzoj 2819(DFS序+树状数组+博弈+lca)
    BestCoder #88(1001 1002)
    hdu 5468(dfs序+容斥原理)
    hdu 5692(dfs序+线段树,好题)
    dfs序题目练习
    csu 1806 & csu 1742 (simpson公式+最短路)
    LuoGuP3774:[CTSC2017]最长上升子序列
  • 原文地址:https://www.cnblogs.com/xuwendong/p/7094202.html
Copyright © 2020-2023  润新知