`
骑猪逛街666
  • 浏览: 142222 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多
原文链接:http://click.aliyun.com/m/22230/

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的一项,最后将这个索引节点插入。
原文链接:http://click.aliyun.com/m/22230/
分享到:
评论

相关推荐

    mongodb-stitch-serverless-functions

    MongoDB Stitch 是 MongoDB 提供的一项全面的后端服务平台,它为开发者提供了构建现代应用程序所需的工具,包括数据库连接、身份验证、API 网关以及核心的“无服务器”功能——MongoDB Realm Serverless Functions。...

    Java毕业设计——基于vue的在线问卷网站设计与实现(源码+数据库).7z

    这个压缩包文件“Java毕业设计——基于vue的在线问卷网站设计与实现(源码+数据库).7z”包含了一整个基于Java和Vue技术栈的毕业设计项目,它是一个在线问卷调查系统的实现。这个系统允许用户创建、发布和收集问卷...

    N-Blog:我的第一个项目——博客

    1. `index.html`: 主页源文件,包含了整个博客的基本结构。 2. `css/`: 存放CSS样式文件,用于控制页面外观。 3. `js/`: 存放JavaScript脚本,实现页面动态功能。 4. `images/`: 图片资源存放地,可能包含博客文章中...

    源代码:网站制作豆瓣图书.rar

    这个压缩包很可能是为学习或参考目的而提供的,帮助开发者了解如何创建一个类似豆瓣网的图书信息展示平台。源代码通常包含HTML、CSS、JavaScript等前端语言,可能还会有PHP、Python等后端语言以及数据库相关的脚本。...

    nodeTunes:使用Node.js创建类似iTunes的应用

    3. **路由配置**:在`routes`目录下创建对应的路由文件,定义GET、POST等请求的处理函数。 4. **视图渲染**:根据路由返回的数据,使用EJS或Pug模板渲染HTML页面。 5. **接口实现**:通过API获取音乐库信息,提供...

    Black-Jack-nodejs-源码.rar

    3. **Node.js核心模块**:在"index.js"中,可能使用了Node.js的核心模块如`http`或`express`来创建Web服务器,以便用户通过浏览器进行交互。同时,`fs`模块可能用于读取和写入数据,如记录游戏历史。 4. **事件驱动...

    PyPI 官网下载 | eventsourcing-1.0.10.tar.gz

    《PyPI上的Python库——eventsourcing-1.0.10.tar.gz详解》 在Python的世界里,PyPI(Python Package Index)是开发者们获取、分享和安装第三方库的重要平台。今天我们要关注的是一个名为“eventsourcing”的Python...

    Expense-tracker-mern:使用MERN堆栈构建的Expense Tracker。 参考:Youtube上的Brad Traversy

    在这个项目中,"Expense-tracker-mern"是使用MERN堆栈构建的,这是一个由四个主要技术——MongoDB、Express.js、React和Node.js组成的现代Web开发框架。 Brad Traversy是一位知名的YouTube教育者,他经常发布关于Web...

    BBS论坛是一个适合个人开发的项目,好机会别错过啊

    1. `index.html`: 主页文件,展示论坛的主要入口和导航。 2. `css` 文件夹:存放样式表,用于控制页面的布局和视觉效果。 3. `js` 文件夹:存放JavaScript代码,负责处理用户的交互和页面动态更新。 4. `api` 文件夹...

    CravedFoods:渴望食物项目

    **1. Node.js 和 Express 框架** Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 语言在服务器端编写代码。`CravedFoods` 项目很可能使用了 Node.js 的一个流行框架 —— ...

    彩票模拟器:使用node-js,react和bootstrap制作的彩票模拟器

    五、开发流程 1. 初始化项目:使用`create-react-app`脚手架初始化React应用,同时安装Node.js和Express等依赖。 2. 设计界面:利用Bootstrap创建UI,如彩票选择区域、结果展示区等。 3. 实现逻辑:编写React组件的...

    Schero:使用MEAN Stack制作的网页,该功能可为学生提供职业测试

    MEAN Stack是四个开源JavaScript技术——MongoDB、Express.js、AngularJS(或Angular)和Node.js的首字母缩写,它们共同构成了一种全栈式的Web开发框架。这个项目可能是为了帮助学生探索自我,了解自己的兴趣、技能...

    TUGAS_membuat-web:tempat menyimpan文件tugas

    【标题】"TUGAS_membuat-web:tempat penyimpanan file ...通过这个任务,学生或开发者将学习到Web开发的基本流程,包括前端和后端的配合,以及如何将静态内容与动态功能结合在一起,创建出一个完整的Web应用程序。

    graph-node:graphql节点

    GraphQL的API由一个单一的入口点——GraphQL服务器提供,该服务器响应客户端发送的查询并返回所需的数据。 ### graph-node的核心功能 1. **schema定义**:`graph-node`支持使用GraphQL Schema Language来定义API的...

    Full Stack Web Development with Backbone.js

    - **通过内容分发网络获取Backbone.js**:讨论了另一种获取Backbone.js的方式——通过CDN(Content Delivery Network)来加载库,以减少项目加载时间。 - **模块、包和服务**:这部分内容主要讨论了在全栈Web开发中...

    appskel-sails:Sails.js Web应用程序引导

    3. **ORM (对象关系映射)**:Sails.js 内置Waterline ORM,支持多种数据库,如MySQL、PostgreSQL、MongoDB等,使数据管理更加便捷。 4. **自定义视图和布局**:Sails.js 使用EJS模板引擎,允许开发者创建自定义视图...

    FelineFinderServer5

    《FelineFinderServer5——基于JavaScript的猫主题服务器构建详解》 在当今互联网时代,Web应用程序的开发变得越来越复杂,而JavaScript作为客户端编程的主要语言,其应用已经不再局限于浏览器环境,而是逐步渗透到...

    nlw04-npsMail:在NLW 04-Rocketseat开发的项目。 包含API的净促销值(NPS)

    描述中进一步明确了项目的编程语言——NODE JS,这是一个使用JavaScript运行时环境进行服务器端开发的框架。通过NODE JS,开发者可以创建高效、可扩展的网络应用。项目的核心功能是实现NPS API,这意味着它可能包括...

    Backend-Campeonato-Ecuatoriano:坎佩纳托埃普阿托里亚诺·德·福博尔网络后端

    3. **数据库集成**:可能使用MongoDB(NoSQL数据库,搭配Mongoose库)或者MySQL(SQL数据库,搭配Sequelize库)来存储和检索比赛数据。 4. **RESTful API设计**:遵循REST原则,设计清晰的HTTP接口,如GET, POST, ...

    Book-store:使用Express和Node JS构建

    在项目中,我们可以创建一个app.js或index.js文件,导入Express模块,并使用`const express = require('express')`和`const app = express()`来启动我们的应用。 为了构建一个Web应用,我们需要定义路由。在Express...

Global site tag (gtag.js) - Google Analytics