MongoDB--二、索引

【时时三省】tessy 进入调试模式 教程 山不在高,有仙则名。水不在深,有龙则灵。----优快云 时时三省。 阅读详情

官方文档https://docs.mongodb.com/manual/

2.1、索引存储结构

MongoDB索引使用B树数据结构,MySQL是B+Tree,本节内容来源于https://blog.youkuaiyun.com/yin767833376/article/details/81511377

2.1.1 B Tree(平衡二叉树)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p5YKJuFo-1601305239556)(/Users/cs/Library/Application Support/typora-user-images/image-20200917145908786.png)]

MongoDB索引使用B树数据结构,MySQL是B+Tree

每个节点占用一个盘块的磁盘空间,一个节点上有两个升序排序的关键字和三个指向子树根节点的指针,指针存储的是子节点所在磁盘块的地址。两个关键词划分成的三个范围域对应三个指针指向的子树的数据的范围域。以根节点为例,关键字为17和35,P1指针指向的子树的数据范围为小于17,P2指针指向的子树的数据范围为17~35,P3指针指向的子树的数据范围为大于35。

模拟查找关键字29的过程:

  1. 根据根节点找到磁盘块1,读入内存。【磁盘I/O操作第1次】
  2. 比较关键字29在区间(17,35),找到磁盘块1的指针P2。
  3. 根据P2指针找到磁盘块3,读入内存。【磁盘I/O操作第2次】
  4. 比较关键字29在区间(26,30),找到磁盘块3的指针P2。
  5. 根据P2指针找到磁盘块8,读入内存。【磁盘I/O操作第3次】
  6. 在磁盘块8中的关键字列表中找到关键字29。

分析上面过程,发现需要3次磁盘I/O操作,和3次内存查找操作。由于内存中的关键字是一个有序表结构,可以利用二分法查找提高效率。而3次磁盘I/O操作是影响整个B-Tree查找效率的决定因素。B-Tree相对于AVLTree缩减了节点个数,使每次磁盘I/O取到内存的数据都发挥了作用,从而提高了查询效率。

2.1.2 B+ Tree

B+Tree是在B-Tree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构。

从上一节中的B-Tree结构图中可以看到每个节点中不仅包含数据的key值,还有data值。而每一个页的存储空间是有限的,如果data数据较大时将会导致每个节点(即一个页)能存储的key的数量很小,当存储的数据量很大时同样会导致B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率。在B+Tree中,所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+Tree的高度。

B+Tree相对于B-Tree有几点不同:

  1. 非叶子节点只存储键值信息。
  2. 所有叶子节点之间都有一个链指针。
  3. 数据记录都存放在叶子节点中。

将上一节中的B-Tree优化,由于B+Tree的非叶子节点只存储键值信息,假设每个磁盘块能存储4个键值及指针信息,则变成B+Tree后其结构如下图所示:

在这里插入图片描述

通常在B+Tree上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点(即数据节点)之间是一种链式环结构。因此可以对B+Tree进行两种查找运算:一种是对于主键的范围查找和分页查找,另一种是从根节点开始,进行随机查找。

可能上面例子中只有22条数据记录,看不出B+Tree的优点,下面做一个推算:

InnoDB存储引擎中页的大小为16KB,一般表的主键类型为INT(占用4个字节)或BIGINT(占用8个字节),指针类型也一般为4或8个字节,也就是说一个页(B+Tree中的一个节点)中大概存储16KB/(8B+8B)=1K个键值(因为是估值,为方便计算,这里的K取值为〖10〗3)。也就是说一个深度为3的B+Tree索引可以维护103 * 10^3 * 10^3 = 10亿 条记录。

实际情况中每个节点可能不能填充满,因此在数据库中,B+Tree的高度一般都在24层。[mysql](http://lib.youkuaiyun.com/base/mysql)的InnoDB存储引擎在设计时是将根节点常驻内存的,也就是说查找某一键值的行记录时最多只需要13次磁盘I/O操作。

###2.2、索引的类型

2.2.1 单字段索引

按score列升序排列

在这里插入图片描述

2.2.2 复合/组合(多字段)索引

先按userid升序排列再按score降序排列,注意先后顺序

在这里插入图片描述

2.2.3 唯一索引

加唯一索引的数据必须唯一不能重复,设置索引后插入重复数据会报错。

2.2.4 地理空间索引(Geospatial Index)

为了支持对地理空间坐标数据的有效查询,MongoDB提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。

2.2.5 文本索引(Text Indexes)

MongoDB提供了一种文本索引类型,支持在集合中搜索字符串内容。这些文本索引不存储特定于语言的停止词(例如“the”、“a”、“or”), 而将集合中的词作为词干,只存储根词。

2.2.6 哈希索引(Hashed Indexes)

为了支持基于散列的分片,MongoDB提供了散列索引类型,它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机,但只支持相等匹配,不支持基于范围的查询。

2.3、索引的使用

2.3.1、查看

db.collection.getIndexes()

例如:

> db.comment.getIndexes() 
[
  {
		"v" : 2, 
		"key" : {
				"_id" : 1
		},
		"name" : "_id_",
		"ns" : "articledb.comment"
  }
]

结果中显示的是默认 _id 索引,其中

V ----索引引擎版本号

key ----加索引的字段

“_id” : 1 ----升序

Name ----索引名称

ns ----数据库.集合

####2.3.2、创建

语法:

db.collection.createIndex(keys, options)

参数:

ParameterTypeDescription
keysdocument包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请 指定值1;对于降序索引,请指定值-1。比如: {字段:1或-1} ,其中1 为指定按升序创建索引,如果你 想按降序来创建索引指定为 -1 即可。另外,MongoDB支持几种不同的索引类型,包括文本、地理空 间和哈希索引。
optionsdocument可选。包含一组控制索引创建的选项的文档。有关详细信息,请参见选项详情列表。

options(更多选项)列表:

ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为false。
uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDupsBoolean3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索 引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

提示:
注意在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex() ,之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名。

【示例】

(1)单字段索引示例:对 userid 字段建立索引:

db.collection.createIndex({userid:1}) 

(2)复合索引:对 userid 和 nickname 同时建立复合(Compound)索引:

db.collection.createIndex({userid:1,nickname:-1})

(3)唯一索引

db.collection.createIndex({userid:1},{unique:"userid"}) 
2.3.2、 移除

删除 comment 集合中 userid 字段上的升序索引:

db.collection.dropIndex({userid:1})

删除所有索引

 db.collection.dropIndexes()

###2.4、索引分析

####2.4.1、索引是否命中

查看根据userid查询数据的情况:

db.comment.find({userid:"1003"}).explain()

(1)无索引情况,“stage” : “COLLSCAN”,表示全集合扫描,注意num为数字不能加引号

db.cstest.find({num:345678}).maxTimeMS(50000).explain()//maxTimeMS最大超时时间
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "cstest.cstest",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "num" : {
                                "$eq" : 345678
                        }
                },
                "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "filter" : {
                                "num" : {
                                        "$eq" : 345678
                                }
                        },
                        "direction" : "forward"
                },
                "rejectedPlans" : [ ]
        },
        "serverInfo" : {
                "host" : "VM-WIN2008R2",
                "port" : 27017,
                "version" : "4.0.9",
                "gitVersion" : "fc525e2d9b0e4bceff5c2201457e564362909765"
        },
        "ok" : 1
}

在这里插入图片描述

(2)有索引状态"stage" : “IXSCAN”,基于索引的扫描

db.cstest.find({num:125678}).explain('executionStats')
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "cstest.cstest",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "num" : {
                                "$eq" : 125678
                        }
                },
                "winningPlan" : {
                        "stage" : "FETCH",
                        "inputStage" : {
                                "stage" : "IXSCAN",
                                "keyPattern" : {
                                        "num" : 1
                                },
                                "indexName" : "num_1",
                                "isMultiKey" : false,
                                "multiKeyPaths" : {
                                        "num" : [ ]
                                },
                                "isUnique" : false,
                                "isSparse" : false,
                                "isPartial" : false,
                                "indexVersion" : 2,
                                "direction" : "forward",
                                "indexBounds" : {
                                        "num" : [
                                                "[125678.0, 125678.0]"
                                        ]
                                }
                        }
                },
                "rejectedPlans" : [ ]
        },
        "executionStats" : {
                "executionSuccess" : true,//执行成功的状态
                "nReturned" : 1,					//返回结果的数量
                "executionTimeMillis" : 0,//执行所需时间
                "totalKeysExamined" : 1,	//索引检查时间
                "totalDocsExamined" : 1,	//检查文档总数
                "executionStages" : {
                        "stage" : "FETCH", //扫描方式,通过索引抓取数据
                        "nReturned" : 1,	//返回结果的数量
                        "executionTimeMillisEstimate" : 0,//预估执行时间
                        "works" : 2,			//工作单元数
                        "advanced" : 1,		//优先返回的结果数目
                        "needTime" : 0,
                        "needYield" : 0,
                        "saveState" : 0,
                        "restoreState" : 0,
                        "isEOF" : 1,
                        "invalidates" : 0,
                        "docsExamined" : 1,//扫描的文档个数
                        "alreadyHasObj" : 0,
                        "inputStage" : {
                                "stage" : "IXSCAN", //索引方式
                                "nReturned" : 1,
                                "executionTimeMillisEstimate" : 0,
                                "works" : 2,
                                "advanced" : 1,
                                "needTime" : 0,
                                "needYield" : 0,
                                "saveState" : 0,
                                "restoreState" : 0,
                                "isEOF" : 1,
                                "invalidates" : 0,
                                "keyPattern" : {
                                        "num" : 1
                                },
                                "indexName" : "num_1",
                                "isMultiKey" : false,
                                "multiKeyPaths" : {
                                        "num" : [ ]
                                },
                                "isUnique" : false,
                                "isSparse" : false,
                                "isPartial" : false,
                                "indexVersion" : 2,
                                "direction" : "forward", //方向
                                "indexBounds" : {
                                        "num" : [
                                                "[125678.0, 125678.0]"
                                        ]
                                },
                                "keysExamined" : 1,
                                "seeks" : 1,
                                "dupsTested" : 0,
                                "dupsDropped" : 0,
                                "seenInvalidated" : 0
                        }
                }
        },
        "serverInfo" : {
                "host" : "VM-WIN2008R2",
                "port" : 27017,
                "version" : "4.0.9",
                "gitVersion" : "fc525e2d9b0e4bceff5c2201457e564362909765"
        },
        "ok" : 1
}

在这里插入图片描述

2.4.2、 数量占用空间等

可通过compass工具查看

VTK:vtkAssembly用法实战 VTK:vtkAssembly用法实战程序输出程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkAssembly.h> #include <vtkAxesActor.h> #include <vtkCubeSource.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkOrientation 阅读详情

相关推荐

【自然语言处理】【聚类】TELL:可解释神经聚类

超越分类的XAI:可解释神经聚类 《XAI Beyond Classification: Interpretable Neural Clustering》 论文地址:https://www.jmlr.org/papers/volume23/19-497/19-497.pdf 一、简介 ​ 本文研究了可解释AI(XAI\text{XAI}XAI)和数据聚类这两个挑战性问题。第一个问题是如何设计一种具有固定可解释性的神经网络,而不是给出一个黑盒模型的事后解释。第二个问题是,使用可微分神经网络来实现离散的k-me

bqw的博客 4137

mysql InnoDB索引原理

参考自: https://www.cnblogs.com/vianzhang/p/7922426.html 平衡多路查找树(B-Tree) B-Tree是为磁盘等外存储设备设计的一种平衡查找树树,在将B-Tree前先了解下磁盘相关知识。 系统从磁盘读取数据到内存时是以磁盘块为基本单位的,位于同一个磁盘块的数据会被一次性取出,而不是需要什么取什么。 InnoDB存储引擎中有页(page)的概念,页是...

qq_35643682的博客 230

Ollama最新快速上手指南:从安装到精通本地AI模型部署

想让Ollama跑你的"私房模型"?三种主流格式全支持,总有一款适合你!GGUF格式(推荐新手首选)创建Modelfile文件:执行创建命令:运行你的专属模型:PyTorch/Safetensors格式(适合进阶玩家)先用库测试模型能否正常加载确保模型结构完整后再导入Ollama官方文档有详细转换指南专业小贴士GGUF格式最轻量,PyTorch最灵活,Safetensors最安全遇到问题?试试用llama.cpp进行格式转换7B参数模型推荐使用q4_0量化级别想让AI用马里奥。

全世界的博客 2309

MongoDB的索引

第6讲

xiaoliuxxs 382

下载猫 —— 会员体系安全分析与加固方案

下载猫的会员验证体系完全失效,破解不需要任何工具链、不需要写代码、不需要改文件。已验证的成功攻击路径:攻击者启动软件时加一个参数,然后用 3 行 JavaScript 即可将会员状态改为"有效期至 2099 年",全部功能闸门放行。等价于普通用户按F12打开控制台输入 3 行代码,全程不到 10 秒。项目结论破解难度⭐ 极低(会按 F12 即可,无需任何破解工具)是否修改文件否(重启软件自动恢复)是否需要服务器否是否影响其他用户单人即可完成,可复制分发修复所需工作量。

猫敷雪 42

《YOLO26/YOLO11/YOLOv8改进与系统实战》,改进与系统实战专栏目录和介绍

YOLOv8 是目前比较火和比较成熟的深度学习框架,是2023年1月发布的,由 Ultralytics 团队开发。Ultralytics自YOLOv5 开始一直积极维护和更新 YOLO 框架,因此 YOLOv8 也享有持续的维护与升级支持。因此我写下《手把手教你YOLOv8实战》专栏,专门为那些对计算机视觉、深度学习、以及目标检测技术感兴趣的读者设计。通过本专栏,你将深入理解 YOLOv8 的核心原理与实际应用,从0 开始学习并掌握如何使用 YOLOv8 完成各类目标检测任务,帮助你快速上手并掌握 YOLO

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

掌握聚合管道操作,熟悉Map-Reduce操作

掌握聚合管道操作,熟悉Map-Reduce操作

m0_51681930的博客 1496

【电机驱动与运动控制】期末重点问题集合

问题1 梯形曲线和S形曲线各自的特点和区别,比较梯形和S形曲线位置、速度、加速度、加加速度的区别。 问题2 总惯量的计算包含哪几个部分? 哪几个部分需要进行折算? 在齿轮箱的输出侧(2号轴)总惯量需要折算到齿轮箱的输入侧(1号轴) 为什么需要折算? 齿轮箱比的存在使2号轴的转速和电机的转速不同 问题3 指出每个部分的名称。 每个部分的功能。 主磁极的励磁绕组:绝大部分直流电机都是由励磁绕组通以直流电建立主磁场; - 电枢铁心:在两个主磁极内表面之间,由硅钢片叠成的圆

【人工智障 | 计算鸡视觉 | 机器孩】 5703

MongoDB常用命令

Mongodb常用命令Mongodb命令查询数据的语法更新文档的语法:删除文档的语法结构统计查询分页列表查询排序查询正则的复杂条件查询比较查询包含查询条件连接查询索引的查看索引的创建索引的移除索引的使用 Mongodb命令 ​ 删除数据库 ​ db.dropDatabase() ​ 创建集合 ​ db.createCollection(name) ​ name: 要创建的集合名称 ​ 集合删除 ​ db.collection.drop() ​ 或 db.集合.drop() ​ 单个文档插入 ​ db.集合.

ssbviv的博客 1638

【四足机器人项目实战】MIT无刷电机FOC硬件电路设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、MCU最小系统--STM32F446RE1.usb串口通讯连接口+程序下载连接口2.MCU电源滤波二、磁编码器角度传感器三、三相驱动桥四、CAN通讯收发器电路五、温度ADC检测六、电源滤波及分压电路1、DC电源输入端2、DC电源滤波电路3、DC电源分压电路4、三相绕线接线端总结参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对

qq_35635374的博客 7061

【100%通过率】2023华为od机试C卷【电脑病毒感染】C语言 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1042

复合索引(组合索引)

用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。

weixin_54707282的博客 6540

CDR插件开发之CPG插件004 - 认识VGCore并编译生成你的第一个CPG文件

上篇文章中,讲到了使用VS2019编译CDR类型库 VGCoreAuto.tlb,编译后得到了vgcoreauto.tlh和vgcoreauto.tli两个文件。本文将对这两个文件说明,并演示通过标准的libid形式来导入CDR类型库,在这个过程中,穿插一些VS2019的使用技巧(删除目录、复制工程、打开项目或解决方案、修改解决方案名称、修改项目名称等),使读者循序渐进,逐步提高对VS2019工具的熟练程度,最后通过修改项目属性配置,生成第一个CPG文件。

Zebe 2984

mongodb中的索引二

通常mongodb中的索引的创建方式如下: {sortkey:1querycriteria:1} 这种方式下,已经排好顺序了,所以只要在排好序的key中找满足查询条件的记录即可,需要扫描的数据量比较大,还有一种索引的创建方式: {querycriteria:1,sortkey:1}这种创建的方式中,不需要扫描很多的记录,在索引中查找满足条件的记录,但是需要在内存中排序,如果满足记录的条件很多,

敖尔其楞的专栏 734

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MongoDB 索引(二)

MongoDB 索引 简介 索引的作用是为了提升查询效率,在查询操作中,如果没有索引,MongoDB 会扫描集合中的每个文档,以选择与查询语句匹配的文档。如果查询条件带有索引,MongoDB 将扫描索引, 通过索引确定要查询的部分文档,而非直接对全部文档进行扫描。 索引可以提升文档的查询速度,但建立索引的过程需要使用计算与存储资源,在已经建立索引的前提下,插入新的文档会引起索引顺序的重排。 MongoDB 的索引是基于 B-tree 数据结构及对应算法形成的。树索引存储特定字段或字段集的值,按字段值排序。索

达文西的博客 326

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

二、MongoDB聚合操作,索引

一、MongoDB聚合操作 MongoDB聚合框架是一个计算框架作用在一个或几个集合对集合中的数据进行一系列运算 将这些数据转化为期望的形式 如: 现在有一组数据 db.orders.insertMany( [ { zip:"000001", phone:"13101010101", name:"LiuBei", status:"created", shippingFee:10, orderLines:[ {product:"Huawei Meta30 Pro",sku:"2.

Xx__WangQi的博客 1047

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MongoDB索引Index(二)

介绍了MongoDB索引的相关细节

凉茶铺的博客 717

MongoDB 入门 (二)索引

MongoDB 入门 (二)索引索引基本概述索引的类型索引的管理查看索引创建索引索引的移除索引的使用 索引基本概述 索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。 如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。 索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的

Hitomi_HXT的博客 230

mongodb 索引详解(二)

1.单字段索引 原文链接:https://docs.mongodb.com/manual/core/index-single/ MongoDB为文档集合中的任何字段提供完整的索引支持 。默认情况下,所有集合在_id字段上都有索引,应用程序和用户可以添加其他索引以支持重要的查询和操作。 本文档描述了单个字段的升序/降序索引。 1.1 在单个字段上创建升序索引 如: r...

jing_flower的博客 420

Mongodb索引(二)

索引类型 文档数据 { "billId":"1001", "amount":600, "address":"广东省深圳市", "date":"2021-10-14", "payWay":"微信支付", "sku":{"name":"可口可乐","num":2,"price":300} } 单字段索引 单个字段上创建索引 db.bill.createIndex( { amount: 1 } ) 嵌入式字段创建索引 db.bill.creat.

RunTimeExcepti0n的博客 308

【MongoDB】索引概述(二)

四、索引属性 1.唯一索引 索引的unique属性使MongoDB防止索引字段出现重复值。除了唯一约束功能之外,唯一索引在功能上可以与其他MongoDB索引互换。 2.局部索引 3.2版中的新功能。 局部索引仅索引集合中符合指定过滤器表达式的文档。通过索引集合中文档的子集,局部索引具有较低的存储需求,并降低了索引创建和维护的性能成本。 局部索引提供了稀疏索引功能的超集,应优先于稀疏索引。 超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集.

chechengtao 254

学习MongoDB 八: MongoDB索引(索引限制条件)(二)

一、简介       我们上一篇介绍了索引基本操作,通过db.collection.createIndex(keys, options)语法创建索引,我们继续介绍地理空间索引、索引的限制,使我们在MongoDB时能提高查询效率。       索引的语法:                 db.collection.createIndex(keys,options)           

yangjiangyy的博客 769

MongoDB学习(二)索引的用法

MongoDB与sql关于库表的名字: database == database collection == table document == row 本篇转载自:http://blog.nosqlfan.com/html/271.html   索引能提高检索数据的速度,你可以想像成在MySQL中创建索引一样,同样索引也是用B-Tree也实现的。 1.单列索引 在字段...

sha0k的专栏 181

MONGODB(二)——索引操作

一、1、插入10w条数据> for(var i = 0;i<100000;i++){... var rand = parseInt(i*Math.random());... db.person.insert({"name":"hxc"+i,"age":i})... }2、使用性能分析函数explain> db.person.find({“name”:”hxc”+1000...

a5678110的博客 159

mongodb笔记(二)索引、python与mongodb交互

mongodb笔记索引创建索引python与mongodb交互重点 索引 创建索引 索引:以提升查询速度 测试:插入10万条数据到数据库中 for(i=0;i<100000;i++){db.t12.insert({name:'test'+i,age:i})} db.t1.find({name:'test10000'}) db.t1.find({name:'test10000'}).explain('executionStats') 建立索引之后对比: 语法:db.集合.ensureIndex({属

行者 821
上一篇: mongodb--零 基础
下一篇: MongoDB--三、存储引擎
chenside2002
博客等级 码龄17年 25粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值