MongoDB核心知识点详解

一、MongoDB简介与特性

MongoDB是一种流行的开源文档型数据库管理系统,属于NoSQL(Not Only SQL)数据库的一种。它以其灵活性、高性能和易于扩展的特点著称,被广泛应用于现代互联网应用中。

1. NoSQL概述
  • 定义: NoSQL(Not Only SQL)指非关系型数据库,是为大规模数据存储而设计的数据库系统。摒弃了传统关系型数据库的部分特性,如固定的表结构和ACID(原子性、一致性、隔离性、持久性)事务,转而强调更高的性能和可扩展性。

  • 优点:

  • 高并发读写:能够处理大量的并发请求。
  • 海量数据存储:支持存储非常大的数据集。
  • 高可扩展性:可以通过增加更多的硬件资源轻松扩展系统能力。
  • 高可用性:具有强大的容错能力和灾难恢复机制。

  • 缺点:

  • 缺乏事务一致性:相比关系型数据库,事务支持较弱。
  • 缺乏读写实时性:对实时性要求极高的场景不够理想。
  • 不支持复杂查询:查询语言不如SQL丰富。
2. NoSQL数据库类型
  • Key-Value:使用键值对的形式存储数据,适用于快速存取场景。
  • 列式数据库:按列存储数据,适合大数据分析。
  • 文档型数据库:以文档形式存储数据,MongoDB即属于此类。
  • 图结构数据库:基于图形模型存储数据。

二、MongoDB数据模型

MongoDB采用了一种面向文档的数据模型,其中包含了数据库(Database)集合(Collection)文档(Document)三个主要组成部分。

1. 数据库(Database)
  • MongoDB中的数据库是一个容器,用于组织相关的集合。每个数据库都是独立的,并且有自己的权限设置。
  • 命名规则
  • 必须是任意的UTF-8字符串,例如“我的数据库”。
  • 不能是空字符串。
  • 不能包含特定字符如空格、.$/\\
  • 长度不得超过64个字节。
  • 保留词:adminlocalconfig等。
2. 集合(Collection)
  • 集合类似于关系型数据库中的表,用于存储文档。
3. 文档(Document)
  • 文档是MongoDB中数据的基本单元,类似于关系型数据库中的行。每个文档是一个JSON格式的对象,具有灵活的结构。