MongoDB快速入门(MongoDB简介、MongoDB的应用场景、MongoDB中的基本概念、MongoDB的数据类型、MongoDB的安装与部署、MongoDB的常用命令、MongoDB的索引)

文章目录

  • 1. MongoDB简介
  • 2. MongoDB的应用场景
  • 3. MongoDB中的基本概念
  • 4. MongoDB的数据类型
    • 4.1 主要数据类型
    • 4.2 特殊数据类型
    • 4.3 BSON数据类型
  • 5. MongoDB的安装与部署
    • 5.1 Windows环境
    • 5.2 Linux环境
  • 6. 开启MongoDB的安全认证
    • 6.1 Windows环境
    • 6.2 Linux环境
  • 7. MongoDB的常用命令
  • 8. MongoDB的索引

视频教程: 黑马程序员MongoDB基础入门到高级进阶,一套搞定mongodb

1. MongoDB简介

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 中是完全合法的。每个文档可以有不同的字段集合,这就是无模式的含义

2. MongoDB的应用场景

传统的关系型数据库(例如 MySQL)在数据操作的三高需求面前,显得力不从心

三高需求:

  • High performance:对数据库高并发读写的需求
  • Huge Storage:对海量数据的高效率存储和访问的需求
  • High Scalability && High Availability:对数据库的高可扩展性和高可用性的需求

MongoDB 能够应对三高需求,以下是一些典型的 MongoDB 应用场景:

  1. 实时数据分析和大数据应用
    • 处理大规模的数据集,如日志聚合、物联网、实时分析等。
    • 高吞吐量的数据写入和读取。
  2. 内容管理系统(CMS)
    • 存储和检索各种格式的文档,如图文、视频、音频等。
    • 灵活的数据模型支持多变的文档结构。
  3. 移动应用
    • 为移动应用提供数据存储,支持大量用户和快速数据同步。
    • 实现无缝的数据离线功能和数据同步。
  4. 单页应用(SPA)
    • 提供快速的 JSON 数据接口,支持现代前端框架的数据需求。
  5. 电子商务
    • 管理复杂的商品目录和用户会话。
    • 支持灵活的商品配置和个性化推荐。
  6. 用户数据管理
    • 存储用户配置文件、账户信息、用户行为数据等。
    • 支持社交网络和用户互动功能。
  7. 游戏应用
    • 存储用户状态、游戏进度、排行榜数据等。
    • 提供高并发的读写能力,支持大量玩家同时在线。
  8. 实时监控和物联网(IoT)
    • 收集和分析来自各种传感器的实时数据。
    • 支持大规模设备的数据写入和查询。
  9. 日志管理和分析
    • 存储和分析系统日志、应用日志、用户行为日志等。
    • 支持日志的快速检索和聚合。
  10. 大规模数据存储
    • 当数据量达到 PB 级别时,MongoDB 的分片功能可以支持数据的水平扩展。

MongoDB 适用于这些场景的原因包括:

  • 无模式:可以很容易地适应数据结构的变化。
  • 高性能:支持高速的数据读写操作。
  • 可扩展性:通过分片可以实现横向扩展,支持大数据量的存储和处理。
  • 高可用性:副本集提供自动故障转移和数据冗余。
  • 地理空间支持:内置的地理空间索引和查询功能,适用于位置相关的应用。

在这些应用场景中,数据操作方面的共同特点是:

  1. 数据量大
  2. 写入操作频繁(读操作和写操作都很频繁)
  3. 数据的价值较低,对事务性要求不高

对于这样的数据,更适合使用 MongoDB 来存储

3. MongoDB中的基本概念

MongoDB快速入门(MongoDB简介、MongoDB的应用场景、MongoDB中的基本概念、MongoDB的数据类型、MongoDB的安装与部署、MongoDB的常用命令、MongoDB的索引)_第1张图片

SQL概念 MongoDB概念 解释
database database 数据库
table collection 数据库表 / 集合
row document 数据记录行 / 文档
column field 数据字段 / 域
index index 索引
table joins 表连接(MongoDB 不支持表连接)
嵌入文档 MongoDB 通过嵌入式文档来替代多表连接
primary key primary key 主键,MongoDB 自动将 _id 字段设置为主键

4. MongoDB的数据类型

MongoDB支持多种数据类型,这些数据类型用于定义文档中字段的类型

4.1 主要数据类型

以下是一些MongoDB支持的主要数据类型:

  1. 字符串:用于存储文本数据。在MongoDB中,字符串必须是用UTF-8编码的
  2. 整数:可以存储32位或64位的整数,具体取决于数值的大小
    • int:32位有符号整数
    • long:64位有符号整数
  3. 布尔值:用于存储真(true)或假(false)值
  4. 双精度浮点数:用于存储浮点数
  5. 数组:用于存储数组或列表类型的值,数组中的元素可以是任何类型
  6. 对象id:用于存储文档的ID,它是一个12字节的十六进制数,通常是文档的唯一标识符
  7. 二进制数据:用于存储二进制数据
  8. 对象:用于存储嵌入的文档
  9. 日期:用于存储日期和时间,以UNIX时间戳的形式(从1970年1月1日开始计算的毫秒数)
  10. 正则表达式:用于存储正则表达式,可以在查询中使用
  11. 代码:用于存储JavaScript代码

4.2 特殊数据类型

以下是MongoDB中一些特殊的数据类型:

  • Min/Max Keys:用于比较小于或大于所有可能BSON元素的键
  • Timestamp:用于记录文档修改的时间戳
  • Decimal128:用于存储高精度的小数
  • Null:用于表示空值或不存在的字段
  • Symbol:在MongoDB 3.2版本后,这个类型已被弃用
  • Undefined:在MongoDB 3.2版本后,这个类型已被弃用

4.3 BSON数据类型

以下是MongoDB中一些具体的BSON类型:

  • DBPointer:用于指向其他集合中的文档
  • ObjectId:用于存储文档的ID
  • UUID:用于存储通用唯一标识符
  • Binary Data:用于存储二进制数据
  • MD5:用于存储MD5哈希

这些数据类型为MongoDB提供了丰富的数据表示能力,使得它能够适应各种数据存储需求

5. MongoDB的安装与部署

5.1 Windows环境

参考我的另一篇博文:Windows环境下安装MongoDB

5.2 Linux环境

参考我的另一篇博文:Linux环境下安装MongoDB

6. 开启MongoDB的安全认证

6.1 Windows环境

参考我的另一篇博文:Windows环境开启MongoDB的安全认证

6.2 Linux环境

参考我的另一篇博文:Linux环境开启MongoDB的安全认证

7. MongoDB的常用命令

参考我的另一篇博文:MongoDB的常用命令(数据库操作、集合操作、文档操作)

8. MongoDB的索引

参考我的另一篇博文:MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)

你可能感兴趣的:(MongoDB,黑马头条,mongodb,数据库)