MongoDB 简介
2016-10-13 本文已影响31人
DongGuangqing
1. 什么是MongoDB
MongoDB 是由C++语言编写的一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2. MongoDB 基本概念
SQL术语/概念 | MongoDB 术语/概念 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 数据行/文档 |
clumn | field | 数据字段/域 |
index | index | 索引/集合 |
table joins | 连接查询 (mongodb 不支持) | |
primary key | primary key | 主键(MongoDB 自动将_id作为主键) |
examples
- sql
id | name | addr |
---|---|---|
0 | zhao | beijing |
1 | li | shanghai |
- mongodb
{
"_id" : ObjectId("xxx"),
"name": "zhao",
"addr": "beijing"
}
{
"_id" : ObjectId("xxx"),
"name": "li",
"addr": "shanghai"
}
3. MongoDB数据类型
类型 | 描述 | 样例 |
---|---|---|
null | null用于表示空值或者不存在的字段 | {"x":null} |
布尔 | 布尔类型有两个值'true'和'false1' | {"X":true} |
32位整数/64位整数/64位浮点数 | javascript中只有一种数字类型,而MongoDB中有上面3中类型,默认情况下shell的数字都被MongoDB当作双精度。在shell下修改文档中的32位整形,也会被转换为64位浮点数。所以尽量不要在shell下面修改文档 | {"X" : 3.1415926} {"X" : 3} |
字符串 | UTF-8字符串都可表示为字符串类型的数据 | {"x" : "foobar"} |
符号 | 不支持这种类型。shell将数据库里的符号类型转换成字符串。 | |
对象id | 对象id是文档的12字节的唯一 ID | {"X" :ObjectId() } |
日期 | 日期类型存储的是从标准纪元开始的毫秒数。不存储时区 | {"X" : new Date()} |
正则表达式 | 文档中可以包含正则表达式,采用JavaScript的正则表达式语法 | {"x" : /foobar/i} |
代码 | 文档中还可以包含JavaScript代码 | {"x" : function() { /* …… */ }} |
二进制数据 | 二进制数据可以由任意字节的串组成。不过shell中无法使用。 | |
最大值 | BSON包括一个特殊类型,表示可能的最大值。shell中没有这个类型。 | |
最小值 | BSON包括一个特殊类型,表示可能的最小值。shell中没有这个类型。 | |
未定义 | 文档中也可以使用未定义类型 | {"x":undefined} |
数组 | 值的集合或者列表可以表示成数组 | {"x" : ["a", "b", "c"]} |
内嵌文档 | 文档可以包含别的文档,也可以作为值嵌入到父文档中,数据可以组织得更自然些,不用非得存成扁平结构的 | {"x" : {"food" : "noodle"}} |