Alan Hou的个人博客

MongoDB高手课

MongoDB再入门

MongoDB 重新定义 OLTP 数据库

2018 4.x 开始支持分布式事务

MongoDB vs. 关系型数据库

MongoDB vs. 关系型数据库

JSON 模式的快速特性:

安装

https://www.mongodb.com/download-center/community

选择版本(Mongo 稳定版为双号版本,如4.2)及操作系统、软件包:以 CentOS 7.0为例:

Mongo 公有云:http://cloud.mongodb.com/,可使用免费账号测试集群,按照步骤操作即可,然后拷贝通过 Mongo Shell 连接的命令进行连接:

演示数据

常用操作

SQLMQL
a = 1{a: 1}
a <> 1{a: {$ne: 1}}
a > 1{a: {$gt: 1}}
a >= 1{a: {$gte: 1}}
a < 1{a: {$lt: 1}}
a <= 1{a: {$lte: 1}}
a = 1 AND b = 1{a: 1, b: 1}或{$and: [{a: 1}, {b: 1}]}
a = 1 OR b = 1{$or: [{a: 1}, {b: 1}]}
a IS NULL{a: {$exists: false}}
a IN (1, 2, 3){a: {$in: [1, 2, 3]}}}

Python 操作 MongoDB

URI的格式参考:mongodb://[username:password@]host1[:port1][,…hostN[:portN]][/[database][?options]]

MongoDB的聚合(Aggregation)运算

聚合运算过程称为管道(Pipeline),由多个步骤(Stage)组成

聚合运算的基本格式

常见步骤

步骤作用SQL 等价运算符
$match 过滤 WHERE
$project 投影 AS
$sort排序 ORDER BY
$group 分组 GROUP BY
$skip/$limit 结果限制 SKIP/LIMIT
$lookup 左外连接 LEFT OUTER JOIN
$unwind展开数组N/A
$graphLookup图搜索N/A
$facet/$bucket分面搜索N/A

常见步骤中的运算符

$match

$project(用于选择需要的或排除不需要的字段)

$group

测试库实操:

复制集

MongoDB 复制集的主要意义在于实现高可用。同时还实现了几个附加作用:

数据如何复制?

通过选举完成故障恢复

复制集节点的常见选项:

实操

配置复制集

MongoDB 全家桶

软件模块描述
mongodMongoDB 数据库软件
mongo MongoDB 命令行工具,管理 MongoDB 数据库
mongosMongoDB 路由进程,分片环境下使用
mongodump/mongorestore命令行数据库备份与恢复工具
mongoexport/mongoimport CSV/JSON 导入与导出,主要用于不同系统间数据迁移
Compass MongoDB GUI 管理工具
Ops Manager(企业版) MongoDB 集群管理软件
BI Connector(企业版) SQL 解释器/BI 套接件
MongoDB Charts(企业版) MongoDB 可视化软件
Atlas(付费及免费) MongoDB 云托管服务,包括永久免费云数据库

从熟练到精通的开发之路

MongoDB文档模型设计三部曲

MongoDB文档模型设计三部曲

1-1关系建模

基本原则

例外情况

1-N 关系建模

基本原则

例外情况

N-N 关系建模

基本原则

例外情况

关联表查询示例

MongoDB 引用设计的限制

表现形式类数据访问类组织结构类
列转行子集预聚合
文档版本近似处理分桶
退出移动版