博客
关于我
MongoDB常见面试题总结(上)
阅读量:794 次
发布时间:2023-02-09

本文共 1411 字,大约阅读时间需要 4 分钟。

MongoDB 基础

MongoDB 是什么?

MongoDB 是一个开源的分布式文件存储数据库系统,基于 C++ 编写。它以文档存储方式著称,操作简便,支持“无模式”数据建模,能够存储复杂数据类型,是一款流行的文档类型数据库。在高负载场景下,MongoDB 天然支持水平扩展和高可用性,可以通过添加更多节点确保服务性能和可用性。它常用于替代传统关系型数据库或键/值存储系统,为 Web 应用提供高扩展、高可用、高性能的数据存储解决方案。

MongoDB 的存储结构

MongoDB 的存储结构与传统关系型数据库不同,主要由以下三个单元组成:

  • 文档(Document):MongoDB 中最基本的存储单元,由 BSON 键值对组成,类似于关系型数据库中的行(Row)。
  • 集合(Collection):一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。
  • 数据库(Database):一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。
  • MongoDB 的数据记录以文档形式存储,这些文档在集合中聚集,数据库中存储一个或多个文档集合。

    SQL 与 MongoDB 常见术语对比

    SQL MongoDB
    表(Table) 集合(Collection)
    行(Row) 文档(Document)
    列(Col) 字段(Field)
    主键(Primary Key) 对象 ID(Objectid)
    索引(Index) 索引(Index)
    嵌套表(Embedded Table) 嵌入式文档(Embedded Document)
    数组(Array) 数组(Array)

    文档

    MongoDB 中的记录是一个 BSON 文档,由键值对组成,类似于 JSON 对象。字段的值可以是其他文档、数组或文档数组。文档的键是字符串,除了少数例外,键可以使用任意 UTF-8 字符。键不能含有空字符 \\0.$ 有特殊意义,以下划线 _ 开头的键是保留的。

    BSON 是 Binary 的简称,是 JSON 文档的二进制表示,支持将文档和数组嵌入到其他文档和数组中。与 JSON 相比,BSON 的遍历速度更快,但需要更多的存储空间。

    集合

    MongoDB 集合存在于数据库中,没有固定的结构,是“无模式”的。可以往集合中插入不同格式和类型的数据,但通常情况下,插入的数据会有一定的关联性。集合名可以是满足以下条件的任意 UTF-8 字符串:

  • 集合名不能是空字符串 ""
  • 集合名不能含有空字符 \\0
  • 集合名不能以 "system." 开头,这是为系统集合保留的前缀。
  • 集合名必须以下划线或字母符号开始,并且不能包含 $
  • 数据库

    数据库用于存储所有集合,而集合又用于存储所有文档。MongoDB 中可以创建多个数据库,每个数据库都有自己的集合和权限。

    MongoDB 预留了几个特殊的数据库:

  • admin:保存 root 用户和角色,例如 system.userssystem.roles。一般不建议用户直接操作这个数据库。
  • local:不会被复制到其他分片,用于存储本地服务器的任意集合。建议不使用 local 数据库存储数据,也不进行 CRUD 操作。
  • config:当 MongoDB 使用分片设置时,config 数据库用于存储分片信息。
  • 转载地址:http://anffk.baihongyu.com/

    你可能感兴趣的文章
    macaca 测试web(2)
    查看>>
    MacBook Air怎么重新输入wifi密码
    查看>>
    MacBook开机出现问号文件夹?别急 可能是这些原因!
    查看>>
    Macbook风扇突然一直狂转?一文搞定各种可能原因
    查看>>
    MacBook黑屏/白屏开不了机?一文搞定所有可能的解决方案!
    查看>>
    MacOS:创建目录出现 Read-only file system
    查看>>
    macOS系统上安装JDK
    查看>>
    MacType Decency 项目常见问题解决方案
    查看>>
    Mac下MySQL 报错:Error1045(28000)解决办法
    查看>>
    Mac电脑怎么读写不了移动硬盘?解决苹果电脑不能读写移动硬盘问题
    查看>>
    Makefile遗漏分隔符错误解决
    查看>>
    malloc和定位new表达式
    查看>>
    MAMP无法正常启动,错误提示The built-in Apache is active
    查看>>
    MangoDB4.0版本的安装与配置
    查看>>
    Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
    查看>>
    Manjaro 24.2 “Yonada” 发布:尖端功能与精美界面再度进化
    查看>>
    map 函数返回的列表在使用一次后消失
    查看>>
    Map 遍历取值及jstl的取值
    查看>>
    Mapbox GL示例教程【目录】-- 已有80篇
    查看>>
    mapping文件目录生成修改
    查看>>