MongDB索引的介绍及使用

本文详细介绍了MongoDB中的多种索引类型,包括单一索引、复合索引和多键值索引,并提供了创建与使用的示例。强调了索引在提升查询效率中的重要性,同时提醒了在何时不使用索引的情况。
摘要由CSDN通过智能技术生成

索引的重要性,应该无需多说了,它可以优化我们的查询,而且在某些特定类型的查询中,索引几乎是必不可少的。这篇文章主要介绍了MongoDB中的几种常见的索引以及在使用时候的一些注意事项。这几种索引基本上涵盖了我们在平时开发的时候会遇到的大部分情况,但是,仍然需要注意的是,这篇文章没有涉及一些特殊的索引,比如TTL索引、全文本索引和地理空间索引,想要了解这几个索引的同学在这里可能得不到想要的答案。

单一索引

单一索引应该是MongoDB里最简单和最容易理解的索引,但由于MongoDB是一个非关系型数据库,它的索引结构跟常见的关系型数据库(例如MySQL)又有所不同。

1、在单一字段上建立索引

假设我们有一个名为records 的 collection ,其中存储的文档格式如下:

{
  "_id": ObjectId("570c04a4ad233577f97dc459"),
  "score": 1034,
  "location": { state: "NY", city: "New York" }
}

我们希望在score字段上建立升序索引,可以执行如下语句

db.records.createIndex({
   score:1})

其中1代表索引按升序排列各项,-1代表按降序排列。这个索引支持在score字段进行查询,例如下面的查询语句:

db.records.find({
   score: 2})
db.records.find({
   score: {$gt: 10}})

2、在内嵌文档字段上建立索引

同样,我们也可以在一个嵌入文档的字段上建立索引,注意这里是针对嵌入文档的某一个字段建立索引。还是考虑上面的文档,我们希望在location的state字段建立索引,可以如下操作

db.records.createIndex({
  "location.state": 1})

也就是,内嵌文档与字段之间用.分割就可以了。这个索引支持如下的查询:

db.records.find({
  "location.state": "CA"})
db.records.find({
  "location.city": "Albany", "location.state": "NY"})

注意这里的第二个查询语句,location.state并不是第一位的查询条件,因为我们已经在location.state上加了索引,mongo会优先使用索引查询,所以这条语句也是有效的。

3、在内嵌文档上建立索引

在上面的例子中,location字段是一个内嵌文档,我们可以针对整个location字段来建立索引,这里需要注意与在内嵌文档字段上建立索引的区别

db.records.createIndex({
   location: 1})

考虑下面的查询语句

db.records.find({
   location: {city: "New York", sta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值