MongoDB官网:MongoDB
MongoDB 是一个开源、高性能、无模式(可以理解为表中没有固定的列)的文档型数据库,MongoDB 的设计理念就是为了简化开发和方便扩展
MongoDB 是 NoSQL 数据库产品中的一种,是最像关系型数据库(例如 MySQL)的非关系型数据库
MongoDB 支持的数据结构非常松散,是一种类似于 JSON 的格式,名为 BSON,所以 MongoDB 既可以存储比较复杂的数据类型,又相当灵活
MongoDB 中的记录是一个文档,它是一个由字段和值对(field: value)组成的数据结构,MongoDB 的文档类似于 JSON 对象,即一个文档就是一个对象
我们用一个例子来理解无模式的概念,假设我们有一个名为 user
的集合,用于存储用户信息
在关系数据库中,你首先需要定义一个表结构,比如:
CREATE TABLE user (
id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100),
age INT
);
在 MongoDB 中,你不需要这样做。你可以直接插入文档,而无需事先定义字段。以下是一些插入到 users
集合中的示例文档:
db.user.insertOne({ username: "alice", email: "[email protected]", age: 25 });
db.user.insertOne({ username: "bob", email: "[email protected]", favoriteColor: "blue" });
注意到第二个文档没有 age
字段,而是多了一个 favoriteColor
字段。这在 MongoDB 中是完全合法的。每个文档可以有不同的字段集合,这就是无模式的含义
传统的关系型数据库(例如 MySQL)在数据操作的三高需求面前,显得力不从心
三高需求:
- High performance:对数据库高并发读写的需求
- Huge Storage:对海量数据的高效率存储和访问的需求
- High Scalability && High Availability:对数据库的高可扩展性和高可用性的需求
MongoDB 能够应对三高需求,以下是一些典型的 MongoDB 应用场景:
MongoDB 适用于这些场景的原因包括:
在这些应用场景中,数据操作方面的共同特点是:
对于这样的数据,更适合使用 MongoDB 来存储
SQL概念 | MongoDB概念 | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表 / 集合 |
row | document | 数据记录行 / 文档 |
column | field | 数据字段 / 域 |
index | index | 索引 |
table joins | 表连接(MongoDB 不支持表连接) | |
嵌入文档 | MongoDB 通过嵌入式文档来替代多表连接 | |
primary key | primary key | 主键,MongoDB 自动将 _id 字段设置为主键 |
MongoDB支持多种数据类型,这些数据类型用于定义文档中字段的类型
以下是一些MongoDB支持的主要数据类型:
int
:32位有符号整数long
:64位有符号整数以下是MongoDB中一些特殊的数据类型:
以下是MongoDB中一些具体的BSON类型:
这些数据类型为MongoDB提供了丰富的数据表示能力,使得它能够适应各种数据存储需求
参考我的另一篇博文:Windows环境下安装MongoDB
参考我的另一篇博文:Linux环境下安装MongoDB
参考我的另一篇博文:Windows环境开启MongoDB的安全认证
参考我的另一篇博文:Linux环境开启MongoDB的安全认证
参考我的另一篇博文:MongoDB的常用命令(数据库操作、集合操作、文档操作)
参考我的另一篇博文:MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)