博客
关于我
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/

    你可能感兴趣的文章
    map和bean的相互转换
    查看>>
    Map的深浅拷贝的探究
    查看>>
    mariadb multi-source replication(mariadb多主复制)
    查看>>
    MariaDB的简单使用
    查看>>
    Mark Mind:下一代思维导图编辑器
    查看>>
    Markdown —— 背景色
    查看>>
    MaterialForm对tab页进行隐藏
    查看>>
    materialTabControl1_SelectedIndexChanged的使用
    查看>>
    matlab中APP介绍-ChatGPT4o作答
    查看>>
    matlab图的连通性算法,matlab判别图的连通性.doc
    查看>>
    MBA中的企业金融课程涉及什么内容
    查看>>
    MD5的算法(C)
    查看>>
    Meikade开源项目常见问题解决方案
    查看>>
    Member var and Static var.
    查看>>
    memcached的LRU删除机制
    查看>>
    memcached缓存服务器的安装
    查看>>
    memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
    查看>>
    memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
    查看>>
    Memcached:Node.js 高性能缓存解决方案
    查看>>
    memcache、redis原理对比
    查看>>