MongoDB 的核心概念(文档、集合、数据库、BSON)是什么?

MongoDB 是一个面向文档的数据库,它的核心概念与传统的关系型数据库(RDBMS)有所不同。以下是它的四个主要核心概念:

  1. 文档 (Document)

    • 定义: 文档是 MongoDB 中的基本数据单元。它类似于关系型数据库中的一行记录,但比行更灵活和强大。
    • 结构: 文档是一组键值对 (key-value pairs)。这些键值对是有序的。
    • 格式: 文档的结构非常类似于 JSON (JavaScript Object Notation)。MongoDB 内部使用 BSON (Binary JSON) 格式来存储文档,BSON 是 JSON 的二进制表示形式,它支持更多的数据类型,并且更易于高效地扫描和编码。
    • 特点:
      • 每个文档都有一个唯一的 _id 字段,它作为文档的主键标识。
      • 文档的字段值可以是各种数据类型,包括字符串、数字、布尔值、数组,甚至可以是嵌套的文档。
      • 同一个集合中的文档可以有不同的结构(字段可以不同、数据类型可以不同),这就是所谓的"无模式"或"灵活模式"。
    • 类比关系型数据库: 类似于关系型数据库中的一行 (Row)
  2. 集合 (Collection)

    • 定义: 集合是 MongoDB 中文档的容器,它是一组相关的文档。
    • 结构: 集合没有强制的结构定义(模式),这意味着一个集合中的文档可以有不同的字段和结构。
    • 特点:
      • 集合存在于数据库中。
      • 你不需要预先创建集合,当你向一个不存在的集合插入第一个文档时,MongoDB 会自动创建该集合。
      • 集合可以包含大量文档,文档的数量没有固定限制。
    • 类比关系型数据库: 类似于关系型数据库中的表 (Table)
  3. 数据库 (Database)

    • 定义: 数据库是 MongoDB 中集合的容器,它是一组相关的集合。
    • 结构: 数据库提供了组织和管理集合的逻辑命名空间。
    • 特点:
      • 一个 MongoDB 实例可以拥有多个数据库。
      • 每个数据库都有自己的一组集合。
      • 权限管理、复制和分片等操作通常在数据库级别进行配置。
    • 类比关系型数据库: 与关系型数据库中的数据库 (Database) 概念是直接对应的。
  4. BSON (Binary JSON)

    • 定义: BSON 是 MongoDB 用于存储文档和进行网络传输的二进制序列化格式。它是 JSON 的超集。
    • 目的:
      • 效率: BSON 设计得比 JSON 更快地解析和扫描。它包含长度前缀,使得跳过不需要的字段或确定文档大小变得容易。
      • 数据类型: BSON 支持比标准 JSON 更多的数据类型,如日期、二进制数据、ObjectId(用于生成唯一的 _id)、正则表达式等。这使得 MongoDB 可以存储更丰富的数据类型而无需特殊处理。
    • 特点: 虽然你在与 MongoDB 交互时(如使用 shell 或驱动程序)看到的数据通常以 JSON 或其变体的形式呈现,但 MongoDB 内部实际存储和处理的是 BSON 格式的数据。

核心概念之间的关系:

可以这样理解它们之间的层次结构:

一个 MongoDB 实例 可以包含多个 数据库 (Database)

每个 数据库 可以包含多个 集合 (Collection)

每个 集合 包含多个 文档 (Document)

每个 文档 是由键值对组成,内部以 BSON 格式存储。

用关系型数据库的类比来说:

  • MongoDB 实例 ≈ 数据库服务器
  • 数据库 ≈ 数据库
  • 集合 ≈ 表
  • 文档 ≈ 行
  • 文档中的键值对 ≈ 列
  • BSON ≈ 数据的内部存储格式(没有直接的 RDBMS 类比,因为它处理的是结构而非扁平的行)

理解这些核心概念是使用 MongoDB 进行数据存储、查询和管理的起点。文档的灵活性和集合的无模式特性是与关系型数据库最显著的区别。

相关推荐
@游子1 小时前
SQL注入语法和介绍(一)
数据库·oracle
蒋士峰DBA修行之路4 小时前
实验十三 WDR诊断报告
数据库
q***33374 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle
杂亿稿4 小时前
数据库的约束
数据库
u***32434 小时前
使用python进行PostgreSQL 数据库连接
数据库·python·postgresql
Codingwiz_Joy4 小时前
Day44 盲注、报错注入 & 实战复现
数据库·安全性测试
7***99876 小时前
GaussDB数据库中SQL诊断解析之配置SQL限流
数据库·sql·gaussdb
Wang's Blog7 小时前
MongoDB小课堂: 文档操作核心技术指南:主键机制、CRUD操作与最佳实践
数据库·mongodb
g***26797 小时前
最新SQL Server 2022保姆级安装教程【附安装包】
数据库·性能优化
风123456789~9 小时前
【OceanBase专栏】OB背景知识
数据库·笔记·oceanbase