mongodb指南(十七) - developer zone - 索引(一)简介

本文详细介绍了MongoDB中索引的作用、创建方法及优化策略,通过实例展示了如何利用索引来加速查询,同时提供了创建索引时的选项说明,帮助开发者提升数据库查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引通常可以显著的提高查询性能。仔细考虑你的应用中会用到的查询种类这样你就可以定义相关的索引了。一旦索引定义完成,在mongodb中实际创建它们是很简单的。

Mongodb的索引在概念上和MySQL等关系型数据库的索引非常相似。当你在某些情境下需要在MySQL中创建一个索引,这样的情境同样适用于Mongodb。

基本概念

一个索引就是一个数据结构,它收集集合中文档的指定字段的值。这种数据结构被Mongo的查询优化器用来对集合中文档进行快速分类和排序。从形式上讲,这些索引按“B-Tree”索引形式来实现的。

在shell中,你可以调用ensureIndex()创建一个索引,参数是一个指定一个或多个关键字的文档。参考前面mongo使用基本知识中例子,我们可以像下面这样对"j"字段建立索引:

db.things.ensureIndex({j:1});

ensureIndex()函数仅在该索引不存在时创建它。

一旦在集合上某个字段建立了索引,对这个字段的随机查询的访问速度会很快。没有这个索引的话,mongodb需要遍历所有文档来匹配查询中的字段:

db.things.find({j:2}); // fast - uses index
db.things.find({x:3}); // slow - has to check all because 'x' isn't indexed

在shell中查看集合中已经存在的索引,你可以运行:

db.things.getIndexes()

要查看数据库中所有的索引,可以运行:

db.system.indexes.find()

创建选项

ensureIndex函数的第二个参数是携带创建选项的文档/对象。这些选项有:

选项默认值
backgroundtrue/falsefalse
dropDupstrue/falsefalse
uniquetrue/falsefalse
sparsetrue/falsefalse
v索引版本。0=早于v2.0版本,1=更小/更快(当前)1 in v2.0.除非特殊情境,默认使用1

   
   
   
   
   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值