逻辑结构关系对比
我们用一张表格来对关系型数据库和MongoDB进行对比
MongoDB
|
关系型数据库
|
文档对象(document)
|
行(row)
|
集合(collection)
|
表(table)
|
数据库(database)
|
数据库(database)
|
数据存储结构
MySQL的数据存储结构:
MySQL的每个数据库存放在一个与数据库同名的文件夹中,MySQL如果使用MyISAM存储引擎,数据库文件类型就包括frm、MYD、MYI.
MongoDB的数据存储结构:
MongoDB的默认数据目录是/data/db,它负责存储所有的MongoDB的数据文件,在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做mydb的数据库,那么构成mydb这个数据库的文件就会由mydb.ns,mydb.0,mydb.1等等组成。
MongoDB数据类型
MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null、布尔、数字、字符串、数组及对象),不能完全满足复杂业务的需要,因此,BSON还提供了日期、32位数字、64位数字等类型,以下对MongoDB数据类型进行简要说明:
类型
|
描述
|
null
|
用于表示空值或者不存在的字段
{“x”,null}
|
布尔
|
‘true’和’false’
{“x”,true}
|
32位整数
|
Shell中这个类型不可用,MongoDB在控制台使用JS引擎进行输入,而JS仅支持64位浮点数,所以32位整数将会被自动转义
|
64位整数
|
Shell中这个类型不可用, 64位整数与32位整数一样,在MongoDB控制台使用时,会转义成64位浮点数
|
64位浮点数
|
Shell中的数字都是这种类型,下面是浮点数
{“x”:3.14}、{“x”:3}
|
字符串
|
UTF-8字符串都可表示为字符串类型的数据
{“x”:”foobar”}
|
符号
|
Shell不支持这种类型,将自动转义成字符串
|
对象ID
|
对象id是文档的12字节的唯一ID,时间戳|机器|PID|计数器
{“x”:ObjectId()}
|
日期
|
日期类型存储的是从标准纪元开始的毫秒数
{“x”:new Date()}
|
正则表达式
|
文档中可以包含正则表达式,其正则表达式采用JS语法来表示
{“x”:/foobar/i}
|
代码
|
文档中可以包含js代码
{“x”:function(){…}}
|
二进制数据
|
二进制数据可以由任意字节的串组成,不过Shell无法使用
|
最大值
|
BSON包括一个特殊类型,表示可能的最大值
Shell无法使用
|
最小值
|
BSON包括一个特殊类型,表示可能的最小值
Shell无法使用
|
未定义
|
文档中也可以使用未定义类型
{“x”:undefined}
|
数组
|
值的集合或者列表可以表示成数组
{“x”:[“a”,”b”,”c”]}
|
内嵌文档
|
文档可以包含别的文档
{“x”:{“foo”:”bar”}}
|
本文链接:http://www.656463.com/portal.php?mod=view&aid=77,转载请注明出处
下一节:MongoDB的常用命令
分享到:
相关推荐
本书“MongoDB实战”深入浅出地介绍了MongoDB的核心概念、安装配置、数据存储格式BSON、查询操作以及高级特性,旨在帮助读者从新手快速成长为MongoDB的熟练使用者。 首先,书中会详细阐述为何选择MongoDB。在大数据...
这份“十分详尽的数据库课件”显然是一份深入浅出的学习资料,非常适合对数据库感兴趣的初学者或希望巩固基础知识的人士使用。 数据库的基础知识包括以下几个方面: 1. **数据库概念**:数据库是一个有组织的数据...
- **Coursera上的“机器学习”课程**: 由斯坦福大学的Andrew Ng教授讲授,这门课程深入浅出地介绍了各种机器学习算法及其在数据分析中的应用。 - **DataCamp的“Data Scientist with Python”路径**: 该路径涵盖了...
总的来说,《大型网站技术架构:核心原理与案例分析》是一本深入浅出的教材,它不仅提供了理论知识,还结合具体案例,让读者能全面了解并掌握构建和优化大型网站所需的关键技能。无论是初学者还是有经验的工程师,都...
这本书深入浅出地介绍了数据库设计、管理、查询以及优化等核心概念,是学习数据库领域的理想起点。 首先,我们要理解数据库系统的基础概念。数据库是一个有组织的数据集合,它能够存储、管理和检索信息,支持多个...
本教程通过PPT的形式,深入浅出地讲解了网站建设的各个环节,旨在帮助学习者构建全面的网站管理知识体系。 一、网站规划 在网站建设之初,规划是至关重要的步骤。这包括确定网站的目标受众、内容定位、功能需求以及...
上海交通大学的这门课程,通过精心制作的PPT课件,深入浅出地讲解了数据库系统的各个方面,旨在帮助学生掌握数据库的基础理论和实际操作技能。 首先,我们需要理解数据库的基本概念。数据库是一个有组织的数据集合...
本课件旨在深入浅出地介绍数据库的基本概念、设计原理以及实际应用,帮助学习者构建坚实的数据库知识体系。 首先,我们要了解数据库的基本概念。数据库是一个有组织、可存储和检索数据的系统,它不仅包含数据本身,...
- 《深入浅出计算机组成原理》:理解计算机底层运行机制。 - 《Java编程思想》:全面学习Java语言。 - 《Python编程:从入门到实践》:适合初学者的Python教程。 - 《高性能MySQL》:数据库性能优化的经典之作。 - ...
《自己动手写网络爬虫》是一本深入浅出的教程,旨在帮助读者理解网络爬虫的工作原理,并通过实践掌握编写网络爬虫的技术。这本书结合了理论与实践,提供了丰富的源码,让学习者能够直接动手操作,提升技能。在我们的...
3. **数据结构与算法**:文章可能深入浅出地解释数据结构(如栈、队列、树、图)和算法(如排序、查找、动态规划),提升读者的编程思维和解决问题的能力。 4. **数据库管理**:涵盖SQL查询优化、数据库设计、事务...
【FCC:ZQW的FCC前端开发笔记】是一份深入浅出的前端开发学习资源,主要基于Free Code Camp(FCC)的学习路径和挑战进行整理。FCC是一个全球知名的在线学习平台,专注于教授Web开发技能,包括HTML、CSS、JavaScript...
这本书深入浅出地介绍了Web应用程序的设计与开发技术,旨在帮助学生和初学者掌握这一领域的核心知识。虽然这里提供的源码不包含书后的课题,但正文中的代码已经足够构建一个全面的理解基础。 在Web程序设计中,我们...
本教程源码"PythonSpiderCourseSource"旨在深入浅出地介绍Python爬虫技术,帮助初学者和有经验的开发者更好地理解和运用Python进行网页数据的获取。 1. **Python基础知识** 在学习Python爬虫之前,我们需要了解...
Leslie Book在书中深入浅出地讲解了全栈开发者必备的核心技能。这不仅包括HTML、CSS和JavaScript等前端基础,还包括Node.js、Express或Django等后端框架的运用,以及SQL和NoSQL数据库的管理。 在前端开发部分,读者...