MongoDB(3)——Index的创建流程1

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

1. 创建

除了用户手动创建索引,系统会为每个Collection建立一个主键索引,下面分析的就是这个主键索引的创建过程。
原来我们说到Collection的创建是在Database的createCollection中开始。

进入_getOrCreateCollectionInstance方法,确实有Collection的创建语句。

那么Collection的构造函数又干了些什么?从下图可以看到,Collection的构造过程中,确实做了一些与索引相关的工作,但还不知道究竟做了些什么。我们继续向下走。

进入init函数,其实并不是每一句都弄清楚了,但是看到_setupInMemoryStructures这个函数就吸引了我。

进入setupInMemoryStructures函数终于发现了看到了关于获取index的函数,追踪发现getIndex函数确实就是创建Index的方法。经过这一系列步骤,索引结构就确定了。

2. 插入数据建立索引
前面我们说过Collection中是如何插入数据的,同样是在_insertDocuments方法中,我们最后有一段没有分析,如下图所示代码,首先获得record的id,然后构造成一个bsonRecord,这个BsonRecord包含两项,一个Id,一个指向Record的指针,这样就构造了Index的一项,最后将这个索引节点插入。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
缓存 NoSQL Shell
MongoDB系列-在复制集(replication)以及分片(Shard)中创建索引
在使用MongoDB时,在创建索引会涉及到在复制集(replication)以及分片(Shard)中创建,为了最大限度地减少构建索引的影响,在副本和分片中创建索引,使用滚动索引构建过程。
527 0
|
NoSQL MongoDB 数据库
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
419 0
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
|
存储 NoSQL 数据可视化
MongoDB性能系列最佳实践-Index
MongoDB将会推出一系列介绍MongoDB性能最佳实践的文章,旨在帮助用户在多个关键方面实现规模化性能优化。
MongoDB性能系列最佳实践-Index
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
265 0
|
NoSQL MongoDB 索引
MongoDB 创建集合
MongoDB 创建集合
315 0
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
138 0
|
存储 NoSQL MongoDB
MongoDB系列--轻松应对面试中遇到的MongonDB索引(index)问题
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中( 索引存储在特定字段或字段集的值),而且是使用了B-tree结构。索引可以极大程度提升MongoDB查询效率。
352 0
MongoDB系列--轻松应对面试中遇到的MongonDB索引(index)问题
|
SQL 存储 NoSQL
全栈开发【第4期】MongoDB入门之数据库表创建
全栈开发【第4期】MongoDB入门之数据库表创建
407 0
|
JSON 开发框架 NoSQL
技能学习:学习使用Node.js + Vue.js,开发前端全栈网站-4.使用axios,并创建接口上传数据到mongodb数据库
根据我的业务范围,设想网站内容分为三类,设计、开发、小程序,设计中有二级分类平面设计、UI设计,平面设计又有三级分类包括VI设计、名片设计、LOGO设计…之后网站发布的不管是文章还是合作订单,全部归属到这些类别中,这样就需要用到数据的关联。
486 0
技能学习:学习使用Node.js + Vue.js,开发前端全栈网站-4.使用axios,并创建接口上传数据到mongodb数据库