`

mongodb(五)-索引

 
阅读更多

参考:

http://www.ttlsa.com/mongodb/mongodb-index-explain-profile-4/

http://m.blog.csdn.net/blog/tianwei7518/44464917 

 

一、语法

    语法:db.COLLECTIONS_NAME.ensureIndex({KET:-1})  --1  升序索引,-1  降序索引

二、查看索引

> db.ttlsa_events.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "ttlsa_login.ttlsa_events",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "stmp" : -1
                },
                "ns" : "ttlsa_login.ttlsa_events",
                "name" : "stmp_-1"
        },
        {
                "v" : 1,
                "key" : {
                        "uid" : 1,
                        "stmp" : -1
                },
                "ns" : "ttlsa_login.ttlsa_events",
                "name" : "uid_1_stmp_-1"
        }
]

    此实例中有三个索引,其中_id_是创建表时自动创建的索引,不能删除。

三、创建索引
     索引参数有:
option values default
backgroud true/falsefalse
dropDups true/falsefalse
unique true/falsefalse
sparse true/falsefalse
>db.ttlsa_posts.ensureIndex({pid:1});
     当有大量数据时,创建索引会非常耗时,可以指定到后台执行,只需指定“backgroud:true”即可。如
>db.ttlsa_posts.ensureIndex({pid:1},{backgroud:true});
四、索引分类

    1.默认索引

        MongoDB有个默认的"_id"的键,他相当于"主键"的角色。集合创建后系统会自动创建一个索引在"_id"键上,它是默认索引,索引名叫"_id_",是无法被删除的。

    2.单列索引

        在单个键上创建的索引就是单列索引,如我们创建的db.user.ensureIndex({"name" : 1}

    3.组合索引

        同时对多个键创建组合索引。如下:

 

>db.user.ensureIndex({"name" : 1,"age" : 1}
//以下的查询将使用到此索引
> db.user.find({"name":'Jack',"age":20})
> db.user.find({"name":'Jack'})
> db.user.find().sort({"name":1})

 

         对多个值进行组合索引,查询时,子查询与索引前缀匹配时,才可以使用该组合索引。

    4.嵌入式索引

         为内嵌文档的键创建索引与普通的键创建索引并无差异。

        如:

 

> db.user.save({"name":"Jack","age":25,"address":{"city":"beijing"}});
> db.user.ensureIndex({"address.city":1})

 

    5.文档式索引

        索引建立在嵌入式文档类型的字段上。

        如:

 

> db.user.save({"name":"Jack","age":25,"address":{"city":"beijing"}});
> db.user.ensureIndex({"address":1})

 

    6.唯一索引

        只需要在ensureIndex命名中指定"unique:true"即可。唯一索引限制了对当前键添加值时,不能添加重复的信息。值得注意的是,当文档不存在指定键时,会被认为键值是“null”,所以“null”也会被认为是重复的,所以     一般被作为唯一索引的键,最好都要有键值。可以使用dropDups来保留第一个文档,而后的重复文档将删除,这种方法慎重操作。

 

>db.user.ensureIndex({name:1},{unique:true});

 

    7.sparse索引

 

        对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档。默认值为 false。解决索引文件过大的问题。不会对该键值为空的行做索、        引。
    >db.user.ensureIndex({name:1},{sparse:true}); 
    8.过期索引-expireAfter
        指定一个值,以秒为TTL控制多久MongoDB的文档保留在此集合。储存在过期时间的字段必须是时间类型(ISODate或ISODate数组),不能使用复合索引。如果使用的是ISODate数组,则按照最小时间进行删除。
        >db.user.ensureIndex({name:1},{expireafterseconds:3600}); 

 

    9.covered索引

        如果你查找的值正好是在索引中,则可以直接返回索引中存的值,而不用到数据文件中查找。当用explain时,当indexOnly=true,表示有用到covered index。

    10.全文索引

        mongodb全文索引是在2.4版本引入的。

     11.理位置索引

       关于LBS相关项目,一般存储每个地点的经纬度的坐标, 如果要查询附近的场所,则需要建立索引来提升查询效率。 Mongodb专门针对这种查询建立了地理空间索引。 2d和2dsphere索引,分别是针对平面和球面。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    mongodb-async-driver-2.0.1 jar包

    7. **集合与数据库操作**:允许开发者轻松创建、查询和管理MongoDB中的数据库和集合,支持索引创建、查询优化等。 8. **GridFS**:支持MongoDB的文件存储系统GridFS,用于存储和检索大文件,将文件拆分为多个块存储...

    MongoDB Community(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    MongoDB(mongodb-org-server_5.0.4_amd64.deb)

    MongoDB Community Server(mongodb-org-server_...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    mongodb-driver-core-3.5.0.jar

    这个驱动程序使开发者能够方便地执行CRUD(创建、读取、更新、删除)操作,以及执行聚合框架、地理空间查询和索引操作。 在3.5.0版本中,开发者还可以利用新的特性,如批量写操作,这允许一次性发送多个写操作,...

    MongoDB(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    MongoDB Community(mongodb-linux-aarch64-ubuntu1804-5.0.8.tgz)

    MongoDB Community Server(mongodb-linux-aarch...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    MongoDB(mongodb-linux-x86_64-rhel70-5.0.4.tgz)

    MongoDB Community Server(mongodb-linux-x86_...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    mongodb-linux-x86_64-rhel62-4.0.0.tgz

    6. 索引:MongoDB提供了多种类型的索引,如单字段、复合、地理空间和文本索引,以加速查询速度。 7. 查询语言:MongoDB使用自己的查询语言MQL,它类似JavaScript,提供了丰富的查询和更新操作。 在Linux环境下安装...

    mongodb-linux-x86_64-ubuntu1404-3.6.4

    6. **性能提升**:在读写性能上进行了优化,尤其是对于读操作,如范围查询和索引扫描,性能得到了显著提升。 7. **新查询操作符**:增加了诸如`$expr`等新查询操作符,使得在查询表达式中可以使用聚合操作符。 8. ...

    mongodb-compass-1.27.1-win32-x64.zip

    MongoDB Compass是MongoDB公司开发的一款强大的图形用户界面(GUI)工具,专为MongoDB数据库管理系统设计。这个工具的主要目标是简化数据库的管理和操作,使非技术用户也能轻松理解和探索数据。"mongodb-compass-...

    mongodb-linux-aarch64-ubuntu1804-4.2.5.tgz

    Ubuntu 18.04 LTS是Ubuntu的一个长期支持版本,提供了长达五年的安全更新和技术支持,因此是企业级部署的热门选择。对于aarch64架构,它是64位ARM处理器的Linux发行版,适用于基于ARM的服务器和设备,比如 Raspberry...

    MongoDB(mongodb-org-mongos-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-mongos-...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    MongoDB(mongodb-src-r5.0.4.tar.gz)

    MongoDB Community Server(mongodb-src-r5.0.4....Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    MongoDB Community Server(mongodb-windows-x86_64-5.0.8-signed.msi

    MongoDB Community Server(mongodb-windows-x86...Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    mongodb-linux-x86_64-rhel70-3.4.9.tgz

    4. **地理空间索引**:MongoDB提供了对地理位置数据的强大支持,可以进行高效的地理空间查询,适用于地图应用、物流追踪等场景。 5. **聚合框架**:MongoDB的聚合框架提供了类似于SQL的聚合操作,可以进行复杂的...

    mongodb-windows-x86-64-6.0.5最新稳定版本

    MongoDB是一款开源、高性能、无模式的分布式文档型数据库,被广泛应用于Web应用程序、大数据分析、内容管理系统等场景。此“mongodb-windows-x86-64-6.0.5”是针对Windows 64位操作系统的最新稳定版本,旨在为用户...

    mongodb-linux-x86_64-2.2.6.tgz

    五、MongoDB的监控与维护 1. 日志监控:MongoDB的日志文件默认位于`/var/log/mongodb/mongod.log`,可以通过`tail -f`命令实时查看。 2. 健康检查:使用`db.serverStatus()`检查MongoDB服务器的状态。 3. 备份恢复...

    mongodb-linux-x86_64-rhel62-3.4.14.tgz

    MongoDB 是一个高性能、开源...在实际使用中,还需要了解其复制集、分片集群、索引管理、查询优化、备份与恢复、安全策略等高级特性。MongoDB提供了丰富的文档和社区资源,帮助开发者更好地利用这个强大的数据库系统。

    mongodb-linux-x86_64-ubuntu1404-3.2.7.tgz

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是...

    mongodb-linux-x86_64-rhel62-4.4.1.tgz

    10. **性能优化**:MongoDB团队持续对查询执行、索引构建和内存管理等核心功能进行优化,确保4.4.1在各种工作负载下都能表现出色。 为了在Linux环境中使用这个压缩包,你需要首先解压,然后按照MongoDB的官方指南...

Global site tag (gtag.js) - Google Analytics