博客
关于我
MongoDB常见面试题总结(上)
阅读量:799 次
发布时间: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/

    你可能感兴趣的文章
    Mysql 分页语句 Limit原理
    查看>>
    MySql 创建函数 Error Code : 1418
    查看>>
    MySQL 创建新用户及授予权限的完整流程
    查看>>
    mysql 创建表,不能包含关键字values 以及 表id自增问题
    查看>>
    mysql 删除日志文件详解
    查看>>
    mysql 判断表字段是否存在,然后修改
    查看>>
    MySQL 到底能不能放到 Docker 里跑?
    查看>>
    mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
    查看>>
    MySQL 加锁处理分析
    查看>>
    mysql 协议的退出命令包及解析
    查看>>
    mysql 参数 innodb_flush_log_at_trx_commit
    查看>>
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>
    MySql 同一个列中的内容进行批量改动
    查看>>
    MySQL 命令和内置函数
    查看>>
    MySQL 和 PostgreSQL,我到底选择哪个?
    查看>>
    mysql 四种存储引擎
    查看>>
    mysql 在windons下的备份命令
    查看>>
    MySQL 在并发场景下的问题及解决思路
    查看>>
    MySQL 在控制台插入数据时,中文乱码问题的解决
    查看>>
    mysql 基准测试
    查看>>