MongoDB 的基本概念

一、数据库(Database)

数据库是 MongoDB 中最高层次的概念,是一个存储数据的逻辑容器,它可以包含多个集合。一个 MongoDB 实例可以管理多个数据库,每个数据库都有自己独立的权限和存储空间。可以使用`use`命令在 Mongo Shell 中切换或创建数据库。

二、集合(Collection)

集合类似于关系型数据库中的表,是一组文档的容器。集合中的文档可以有不同的结构,不需要像关系型数据库那样定义严格的表结构。

三、文档(Document)

文档是 MongoDB 中数据的基本单元,相当于关系型数据库中的一行记录。文档以键值对的形式存储数据,键是字符串,值可以是各种数据类型,如字符串、数字、数组、对象等。

javascript 复制代码
{

  "_id": "123456",

  "name": "John Doe",

  "age": 30,

  "hobbies": ["reading", "coding"]

}

`_id`字段是文档的唯一标识符,默认情况下会自动生成,也可以在插入文档时自定义。

四、字段(Field)

字段是文档中的键值对中的键,用于标识和存储特定的数据。每个字段都有一个名称和对应的值,字段的值可以是任何合法的 MongoDB 数据类型。在上面的文档示例中,`name`、`age`和`hobbies`都是字段。

五、数据类型

**字符串(String):**用于存储文本数据,必须使用双引号或单引号包裹。

**数字(Number):**支持整数和浮点数,如`3`、`3.14`等。

**日期(Date):**用于存储日期和时间信息,使用`new Date()`创建。

**数组(Array):**可以存储多个值的有序集合,如`"apple", "banana", "cherry"`。

**对象(Object):**用于存储复杂的嵌套数据结构,如`{"address": {"street": "123 Main St", "city": "Anytown"}}`。

**布尔值(Boolean):**取值为`true`或`false`。

六、索引(Index)

索引用于提高数据库的查询效率,类似于书籍的目录。在 MongoDB 中,可以为集合中的一个或多个字段创建索引。通过索引,MongoDB 可以更快地定位和查询数据,特别是在处理大量数据时,能显著提高查询性能。可以使用`db.collection.createIndex({ field: 1 })`命令创建索引,其中`field`是要创建索引的字段名,`1`表示升序索引,`-1`表示降序索引。

七、游标(Cursor)

游标是 MongoDB 在查询操作时返回结果的一种数据结构,它指向查询结果集的当前位置。通过游标,可以逐个遍历查询结果中的文档。在 Mongo Shell 中,查询操作通常会返回一个游标,例如`var cursor = db.users.find()`,可以使用`cursor.hasNext()`方法判断是否还有下一个文档,使用`cursor.next()`方法获取下一个文档。

八、副本集(Replica Set)

副本集是由多个 MongoDB 节点组成的集群,其中包含一个主节点(Primary)和多个从节点(Secondary)。主节点负责处理所有的写操作和大部分读操作,从节点则从主节点复制数据,以提供数据冗余和高可用性。当主节点出现故障时,副本集会自动进行选举,将一个从节点提升为主节点,保证系统的正常运行。

九、分片(Sharding)

分片是将大型数据集分散存储在多个服务器(分片)上的技术,用于解决单机存储和处理能力的限制。通过分片,可以将数据水平分割到不同的节点上,每个节点只负责存储和处理一部分数据,从而提高系统的可扩展性和性能。

十、存储引擎(Storage Engine)

存储引擎负责管理 MongoDB 的数据存储和读写操作。MongoDB 支持多种存储引擎,如 WiredTiger、In-Memory 等。不同的存储引擎具有不同的特点和性能优势,例如 WiredTiger 存储引擎提供了高效的存储和并发读写能力,支持文档级别的并发控制,而 In-Memory 存储引擎则将数据完全存储在内存中,适用于对读写速度要求极高且数据量相对较小的场景。

相关推荐
Upsy-Daisy2 分钟前
Hermes Agent 学习笔记 02:安装、配置与第一次运行
java·前端·数据库
Tongpao_SSDHDD42 分钟前
希捷酷鹰ST6000VX008实测解析:中小安防监控高性价比存储方案
大数据·数据库·人工智能
蓝鸟19741 小时前
Oracle超大DMP备份文件瘦身、日志精简、磁盘空间优化实战方案日志
数据库·oracle·数据库运维·生产运维实战·oracle避坑·磁盘空间优化·oracle日志清理
金融支付架构实战指南1 小时前
CQRS + 命令模式 + 事件驱动 + 数据库持久化
数据库·ddd·命令模式·领域驱动模型
sevenll071 小时前
DocKit agentic MongoDB GUI 客户端 - 用自然语言和你的数据对话
数据库·mongodb·nosql·agent·桌面客户端
团象科技2 小时前
从一线实操案例拆解不同出海团队落地海外VPS运维独立站的路径细节
大数据·数据库·人工智能
小马爱打代码2 小时前
框架 - 组件 - 中间件:生产级参数配置指引
数据库·中间件
asdfg12589632 小时前
一文通俗理解JDBC中的核心概念+案例
java·数据库·oracle·jdbc
点灯小铭2 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
数据库·单片机·mongodb·毕业设计·课程设计·期末大作业
小陈phd2 小时前
Text2SQL智能体学习笔记(二)——NL2SQL落地的隐形基石:元数据库
数据库·笔记·学习