文档章节

mongodb查询分析计划

bluetearzch
 bluetearzch
发布于 2017/03/15 22:19
字数 278
阅读 5
收藏 1

mongodb提供了类似传统关系型数据库的查询分析方法。

它使用** db.collection.find().explain()**分析查询计划

这个方法可以帮助我们优化代码。

例如如下的代码:

for (val=0; val < 1000000; val++) {
    db.person.save({person : val});
}

加索引之前的查询计划:

db.person.find({person:555500}).explain(); 
{ 
“cursor” : “BasicCursor”, 
“isMultiKey” : false, 
“n” : 99899, 
“nscannedObjects” : 1000000, 
“nscanned” : 1000000, 
“nscannedObjectsAllPlans” : 1000000, 
“nscannedAllPlans” : 1000000, 
“scanAndOrder” : false, 
“indexOnly” : false, 
“nYields” : 781, 
“nChunkSkips” : 0, 
“millis” : 40, 
“server” : “gaurav-Aspire-E1-572:27017”, 
“filterSet” : false 
}

加索引之后的查询计划:

db.person.find({person:555500}).explain(); 
{ 
“cursor” : “BtreeCursor person_1”, 
“isMultiKey” : false, 
“n” : 1, 
“nscannedObjects” : 1, 
“nscanned” : 1, 
“nscannedObjectsAllPlans” : 1, 
“nscannedAllPlans” : 1, 
“scanAndOrder” : false, 
“indexOnly” : false, 
“nYields” : 0, 
“nChunkSkips” : 0, 
“millis” : 0, 
“indexBounds” : { 
“person” : [ 
[ 
555500, 
555500 
] 
] 
}, 
“server” : “gaurav-Aspire-E1-572:27017”, 
“filterSet” : false 
}

返回字段说明:

_cursor:返回游标类型,有BasicCursor和BtreeCursor,BtreeCursor说明使用了索引。

nscanned:扫描document的行数。

n:返回的文档行数。

millis:耗时(毫秒)。

indexBounds:所用的索引。

** 添加索引的方式: **

db.person.ensureIndex({person:1});

1:表示升序索引 -1:表示降序索引

这个根据实际的字段排序方式建立

查询索引的方式:

db.person.getIndexes();

更多详情请参考官方文档:

http://docs.mongodb.org/manual/reference/method/cursor.explain/

© 著作权归作者所有

bluetearzch
粉丝 0
博文 2
码字总数 582
作品 0
程序员
私信 提问
CentOS7 YUM 安装MongoDB 4.0

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点 模式自由 :可以把不...

Elson
2018/12/03
1K
0
MongoDB【最新版V2.6】- 发行说明

开发团队表示,MongoDB 2.6是迄今为止改进最大的版本,全面增强了核心服务器,引入了新的开创性的自动化工具、重要的企业特性等等。 MongoDB 2.6版本的主要改进包括: 1 重写了整个查询执行引...

止静
2014/10/13
77
0
NoSql: MongoDB简介

真理局限性:没有任何工具能应对所有问题 没有任何一个数据库能满足所有的应用场景   MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储...

Bingo许
2012/11/30
225
0
centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
05/23
27
0
技术分享 | MongoDB 一次排序超过内存限制的排查

作者:任仲禹 本文目录: 一、背景 1. 配置参数检查 2. 排序字段是否存在索引 二、测试环境模拟索引对排序的影响 1. 测试环境信息 2. 报错语句的执行计划解释 3. 建立新的组合索引进行测试 ...

linjin200
07/03
10
0

没有更多内容

加载失败,请刷新页面

加载更多

面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运...

Java高级架构师n
37分钟前
18
0
面向对象编程

1、类和对象 类是对象的蓝图和模板,而对象是实例;即对象是具体的实例,类是一个抽象的模板 当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定...

huijue
今天
18
0
redis异常解决 :idea启动本地redis出现 jedis.exceptions.JedisDataException: NOAUTH Authentication required

第一次安装在本地redis服务,试试跑项目,结果却出现nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required错误,真是让人头疼 先检查一...

青慕
今天
32
0
Spring 之 IoC 源码分析 (基于注解方式)

一、 IoC 理论 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 二、IoC方式 Spring为IoC提供了2种方式,一种是基于xml...

星爵22
今天
32
0
Docker安装PostgresSql

Docker安装PostgresSql 拉取docker镜像 # docker pull postgres:10.1010.10: Pulling from library/postgres9fc222b64b0a: Pull complete 38296355136d: Pull complete 2809e135bbdb: Pu......

Tree
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部