- MongoDB:基于NoSQL文档存储模型,文档是以二进制JSON(BSON)对象的方式存储
- MongoDB优点:面向文档、高性能、高可用性(复制集)、高可拓展性(分布式)、对SQL注入攻击免疫
- 文档之间的关系:1:1、1:N、N:1、N:N
- 传统关系型数据库和MongoDB非关系型文档数据库的比较
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database:数据库 | database:数据库 | 数据库 |
table:表格 | collection:集合 | 数据库表/集合,存放文档 |
row:行 | document:文档 | 数据记录行/文档,文档数据库最小的单位 |
column:列 | field:字段 | 数据字段/域 |
index:索引 | index:索引 | 索引 |
table joins:表连接 | 表连接,MongoDB不支持 | |
primary key:主键 | primary key:主键 | 主键,MongoDB自动将_id字段设置为主键 |
- MongoDB ObjectId
- ObjectId是一个12字节BSON类型数据,有以下格式
- 前4个字节表示时间戳
- 接下来的3个字节是机器标识码
- 紧接的2个字节有进程id组成(PID)
- 最后3个字节是随机数
- MongoDB存储的文档必须有一个 _id 键,这个键可以人为自定义,默认是个ObjectId对象,且该键在某个集合中必须是唯一的,来确保集合里面每个文档都能被唯一标识
- MongoDB采用ObjectId的原因:在多个服务器上使用自增的主键既费力又费时
- MongoDB数据类型的对照
类型 | 数字 | 备注 |
---|---|---|
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binary data | 5 | |
Undefined | 6 | 已废弃 |
Object id | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 | |
Regular Expression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript (with scope) | 15 | |
32-bit integer | 16 | |
Timestamp | 17 | |
64-bit integer | 18 | |
Min key | 255 | Query with -1 |
Max key | 127 |
- WriteConcern参数
- WriteConcern.NONE:没有异常抛出
- WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常
- WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作
- WriteConcern.MAJORITY:抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作
- WriteConcern.FSYNC_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘
- WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件
- WriteConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作