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 存储引擎则将数据完全存储在内存中,适用于对读写速度要求极高且数据量相对较小的场景。

相关推荐
倔强的石头_30 分钟前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB2 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
葫芦和十三12 小时前
图解 MongoDB 22|读写关注:持久性与一致性的档位选择
后端·mongodb·agent
葫芦和十三18 小时前
图解 MongoDB 21|选举与 failover:Primary 是怎么选出来的
后端·mongodb·agent
jiayou641 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
葫芦和十三2 天前
图解 MongoDB 19|Oplog:复制的真正载体,不是文档是操作
后端·mongodb·agent
葫芦和十三2 天前
图解 MongoDB 20|复制延迟与 catch up:Secondary 为什么跟不上
后端·mongodb·agent
GBASE2 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr2 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库