MongoDB快速入门教程 (3.2)
3.2.索引
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,建立索引,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录,这种扫描全集合的查询效率是非常低的,特别是在数据量特别大的时候,话费的时间就非常的多
举个例子:目前我的一个集合中有170多万条数据,我们在没有建立索引的情况下测试一下查询时间
db.course.find({"name": "mongodb入门8888"}).explain("executionStats")
执行时间:
接下来,我们创建索引:
//语法: db.集合名称.createIndex({})
db.course.createIndex({name:1})
createIndex方法中,name表示查询的字段,1表示升序,-1表示降序
创建好索引后,我们再次执行查询
db.course.find({"name": "mongodb入门8888"}).explain("executionStats")
以下是执行时间:
3.3.关系型数据库中表的关系
3.3.1.一对一关系
一对一的关系比较简单,例如:一个人只有一张身份证,一张身份证只对应一个人
数据库中表关系举例:
一张user表对应一张driver表,意味着我们可以通过user表中的uid去查询driver表中和这个uid相同的这个人的驾驶证信息
3.3.2.一对多关系
一对多的关系简单的说就是一个对应多个,例如:一个母亲可以有多个儿女,但是每个儿女只对应着一个亲生母亲
数据库中表关系举例:
在上面这种应用场景中,一张category表和goods表关联,关系为一对多关系,一个分类下面有多种商品,一种商品只放入一个分类,我们可以根据category中的分类id去goods表中查询出当前分类下到底有多少商品,同时也可以用goods表中的cate_id来查询出当前分类的一些信息
3.3.3.多对多关系
多对多关系举例:一个学生可以选择多门课程学习,例如,语文、数学、计算机,同时一门课程也可以有多个学生来学习,例如,数学课程有50人学习,英语课程有100人学习等
数据库中表关系举例:
多对多关系在数据库中通常需要第三张表来存储对应关系,上面的图中,我们使用student_course来存储关系,在这张表中,sid和cid分别是学生表中的id和课程表中的id,当我们想知道一个学生选择了多少门课程的时候,我们只需要在student_course表中,根据sid来查询出对应的cid就可以了
螺钉课堂视频课程地址:http://edu.nodeing.com
MongoDB快速入门教程 (3.2)的更多相关文章
- MongoDb 快速入门教程
文章首发于[博客园-陈树义],点击跳转到原文MongoDb 快速入门教程. MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的 ...
- MongoDB快速入门教程 (4.4)
4.5.Mongoose索引和方法 4.5.1.设置索引 let UserSchema = mongoose.Schema({ sn: { type: Number, // 设置唯一索引 unique ...
- MongoDB快速入门教程 (4.3)
4.3.Mongoose模块化 4.3.1.为什么要进行模块化拆分? 模块化拆分的目的是为了代码的复用,让整个项目的结构更加清晰,举个例子:当数据库中的集合变多的时候,例如有课程.订单.分类.教师等多 ...
- MongoDB快速入门教程 (4.2)
4.2.Mongoose实现增删查改 中文文档地址: https://cn.mongoosedoc.top/docs/guide.html 4.2.1.Mongoose是什么? Mongoose是Mo ...
- MongoDB快速入门教程 (4.1)
4.Mongoose使用 4.1.nodejs操作mongodb 文档地址:http://mongodb.github.io/node-mongodb-native/3.2/tutorials/cru ...
- MongoDB快速入门教程 (3.3)
3.4.聚合 3.4.1.什么是聚合? MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 例如上图 ...
- MongoDB快速入门教程(3.1)
3.MongoDB进阶 3.1.权限验证 以下内容适用于Mac系统用户,window系统用户请看后面文档 3.1.1.创建超级管理员用户 默认情况下连接mongodb是不需要用户名和密码的,这样不安全 ...
- MongoDB快速入门教程 (2)
2.MongoDB的基本的CRUD操作 2.1.创建文档 在具体操作之前,想要知道有多少数据库,可以执行下面命令 show dbs 在mongodb中,数据库中包含的叫做集合(表),集合中存储的内容叫 ...
- MongoDB快速入门教程 (1)
1.MongoDB初识 1.1.MongoDB是什么? MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于 ...
随机推荐
- Java实现构造无向图的欧拉回路( The Necklace)
中文翻译: 但是,唉!一天,项链被撕破了,珠子散落在屋檐上.我姐姐尽力把地板上的珠子都捡起来了.但她不确定自己是否能收集到所有的照片.现在,她来找我帮忙.她想知道是否有可能让克劳斯使用她在里面的所有珠 ...
- Java实现第八届蓝桥杯迷宫
迷宫 题目描述 X星球的一处迷宫游乐场建在某个小山坡上. 它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母. 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R ...
- 对SSH框架的理解
首先是对struts的理解.struts是把servlet.jsp以及众多标签库整合在一起的开源web框架,他实现了mvc设计模式.Struts实际上就是对MVC的各部件提供了现成的实现组件.Stru ...
- Debian安装无线网卡Ralink RL5390驱动
惠普一体机用的无线网卡是Ralink的 RL5390,安装Debian10以后没有驱动,网上下载firmware-misc-nonfree_20190114-2_all.deb 和firmware-r ...
- Redis学习笔记(十九) 发布订阅(上)
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息,它的发布与订阅功能由PUBLISH.SUBSCRIBE.PSUBSCRIBE等命令组成. ...
- 🧑🏻💻数据库简介及Mac平台环境搭建🧑🏻💻
数据库 存储数据的演变过程 如果没有使用数据库,我们自己存放文件,数据格式是千差万别的,完全取决于我们自己,例如: """ # 张三 zhangsan|123|read ...
- windows 定时删除N天前日志脚本
删除目录/P 表示目录/S 表示递归向下查询子目录/D 表示date -460 意思是460天以前 或者 -2018/11/9 表示这个日期以前的/C 开始执行命令 内部还有一个cmd @ISDIR= ...
- Chosen by god【组合数打表】
Chosen by god 题目链接(点击) Everyone knows there is a computer game names "hearth stone", recen ...
- 【Android】使用Appium+python控制真机,碰到的问题以及处理(持续更新)
问题: selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Ori ...
- (八)postman请求的form-data、x-www-form-urlencoded、raw、binary的区别
原文链接:https://blog.csdn.net/jiadajing267/article/details/87883725 1.form-data 等价于http请求中的multipart/fo ...