• mongoDB

  • MongoDB 是一种面向文档的 NoSQL 数据库,其数据结构以灵活的文档为核心,具体结构如下:

  1. 文档(Document)

    • 是 MongoDB 中最小的数据单元,类似关系型数据库中的“行”,但结构更灵活。
    • 以 [use::BSON](Binary JSON) 格式存储,是 JSON 的二进制扩展,支持更多数据类型(如日期、二进制数据、ObjectId 等)。
    • 示例:
      {
        "_id": ObjectId("507f1f77bcf86cd799439011"),
        "name": "MongoDB",
        "type": "database",
        "version": "5.0",
        "features": ["flexible", "scalable"],
        "createdAt": ISODate("2023-01-01T00:00:00Z")
      }
    • 其中 _id 是文档的唯一标识,默认自动生成,类似主键。
  2. 集合(Collection)

    • 是文档的容器,类似关系型数据库中的“表”,但无固定 schema(字段和结构可随文档变化)。
    • 集合名称需符合命名规范(如不能包含特殊字符),通常使用复数形式(如 usersproducts )。
    • 同一集合中的文档通常具有相关的业务逻辑(如用户集合存放所有用户文档)。
  3. 数据库(Database)

    • 是集合的容器,一个 MongoDB 实例可包含多个数据库,每个数据库有独立的权限控制。
    • 常用默认数据库: admin (权限相关)、 local (本地数据,不复制)、 config (分片配置)。
    • 命名需符合规范(如不包含空格、特殊字符,小写为主)。
  4. 其他关键结构

    • 索引(Index):基于集合中的字段创建,类似关系型数据库的索引,用于加速查询(如单字段索引、复合索引、地理空间索引等)。
    • 副本集(Replica Set):由多个 MongoDB 实例组成的集群,包含主节点(处理写操作)和从节点(复制主节点数据,提供读服务),用于实现高可用和数据冗余。
    • 分片(Sharding):将大型集合的数据拆分到多个分片服务器,用于处理海量数据,提升扩展性。

总结:MongoDB 以“文档-集合-数据库”为核心层级结构,通过 BSON 格式和灵活的 schema 适应多样化数据场景,同时支持索引、副本集、分片等功能保障性能和可靠性。