共计 2117 个字符,预计需要花费 6 分钟才能阅读完成。
每日一句
If no one else guards the world, then I will come forward.
如果没有他人捍卫这个世界,那么我将挺身而出。
概述
MongoDB 次要是由文档 (document)、汇合(collection)、数据库(database) 这三局部组成的。类比于 mysql 的行、表、数据库。
体系结构
MYSQL 与 MongoDB 比照
MongoDB 与 SQL 的构造比照详解
SQL Terms/Concepts | MongoDB Terms/Concepts | 解释与阐明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表 / 汇合 |
row | document or BSON document | 数据记录行 / 文档 |
column | field | 数据库字段 / 域 |
index | index | 索引 |
table joins | embedded documents and linking | 表连贯,MongoDB 不反对,MongoDB 通过嵌入式文档来代替多表连贯 |
primary key Specify any unique column or column combination as primary key. | primary key In MongoDB, the primary key is automatically set to the _id field. | 主键,MongoDB 主动将_id 字段设置为主键 |
aggregation (e.g. group by) | aggregation pipeline See the SQL to Aggregation Mapping Chart. |
数据模型
MongoDB 的最小存储单位就是文档 (document) 对象。文档 (document) 对象对应于关系型数据库的行。数据在 MongoDB 中以 BSON (Binary-JSON)文档的格局存储在磁盘上。
BSON (Binary Serialized Document Format)是一品种 json 的一种二进制模式的存储格局,简称 Binary SON。
BSON 和 SON 一样,反对内嵌的文档对象和数组对象,然而 BSON 有 JSON 没有的一些数据类型,如 Date 和 BinData 类型。
BSON 采纳了相似于 C 语言构造体的名称、对示意办法,反对内嵌的文档对象和数组对象,具备轻量性、可遍历性、高效性的三个特点,能够无效形容非结构化数据和结构化数据。
这种格局的长处是灵活性高,但它的毛病是空间利用率不是很现实。
Bson 中,除了根本的 SON 类型:string integer,boolean,double,nullarray 和 object , mongo 还应用了非凡的数据类型。
这些类型包含 date,object idbinary data,regular expression 和 code。
每一个驱动都以特定语言的形式实现了这些类型,查看你的驱动的文档来获取详细信息。
BSON 数据类型参考列表:
数据类型 | 形容 | 举例 |
---|---|---|
字符串 | UTF- 8 字符串都可示意为字符串类型的数据 | {“x” : “foobar”} |
对象 id | 对象 id 是文档的 12 字节的惟一 ID | {“X” :ObjectId() } |
布尔值 | 真或者假:true 或者 false | {“x”:true}+ |
数组 | 值的汇合或者列表能够示意成数组 | {“x”:[“a”, “b”, “c”]} |
32 位整数 | 类型不可用。JavaScript 仅反对 64 位浮点数,所以 32 位整数会被主动转换。 | shell 是不反对该类型的,shell 中默认会转换成 64 位浮点数 |
64 位整数 | 不反对这个类型。shell 会应用一个非凡的内嵌文档来显示 64 位整数 | shell 是不反对该类型的,shell 中默认会转换成 64 位浮点数 |
64 位浮点数 | shell 中的数字就是这一种类型 | {“x”:3.14159,”y”:3} |
null | 示意空值或者未定义的对象 | {“x”:null} |
undefifined | 文档中也能够应用未定义类型 | {“x”:undefifined} |
符号 | shell 不反对,shell 会将数据库中的符号类型的数据主动转换成字符串 | |
正则表达式 | 文档中能够蕴含正则表达式,采纳 JavaScript 的正则表达式语法 | {“x”:/foobar/i} |
代码 | 文档中还能够蕴含 JavaScript 代码 | {“x”:function() {/ …… / }} |
二进制数据 | 二进制数据能够由任意字节的串组成,不过 shell 中无奈应用 | |
最大值 / 最小值 | BSON 包含一个非凡类型,示意可能的最大值。shell 中没有这个类型。 |
提醒:
shell 默认应用 64 位浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,能够应用 NumberInt(4 字节符号整数)或 NumberLong(8 字节符
号整数),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}
美文佳句
读过一段话,觉得很有感触:温顺的人通常是这样诞生的,他们亲身经历过许许多多的难,过后决定不再让其他人像本人这般惆怅。这份体贴,人们称之为温顺。
每个人的经验不同,但我置信,温顺的人必然都是具备同理心的人。他们晓得有些话有些行为会让人不难受,所以能将心比心,在尊重本人的同时也尊重他人。要想被别人温顺以待,就要先学会温顺待人。
你好,我是 yltrcc,日常分享技术点滴,欢送关注我的公众号:ylcoder