MongoDB 中的数据建模

17 Mar 2025 | 阅读 2 分钟

在 MongoDB 中,数据具有灵活的模式。 这与 SQL 数据库完全不同,在 SQL 数据库中,您必须在插入数据之前确定并声明表的模式。 MongoDB 集合不强制执行文档结构。

数据建模中的主要挑战是平衡应用程序的需求、数据库引擎的性能特征和数据检索模式。

在 MongoDB 中设计模式时,请考虑以下事项

  • 始终根据用户需求设计模式。
  • 在写入操作上执行连接,而不是在读取操作上。
  • 您希望一起使用的对象应该组合到一个文档中。 否则它们应该分开(确保不需要连接)。
  • 优化您的模式,以用于更频繁的用例。
  • 在模式中进行复杂的聚合。
  • 您应该复制数据,但要有限制,因为磁盘空间比计算时间便宜。

例如

让我们以一位客户为例,他需要为其网站设计数据库。 他的网站有以下要求

每个帖子都是不同的(包含唯一的标题、描述和 url)。

每个帖子可以有一个或多个标签。

每个帖子都有其发布者的姓名和总点赞数。

每个帖子可以有零个或多个评论,评论必须包含用户名、消息、日期时间和点赞数。

对于上述要求,RDBMS 中至少需要三个表。

table structure

但在 MongoDB 中,模式设计将有一个集合 post 并具有以下结构

{
_id: POST_ID
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user: 'COMMENT_BY',
message: TEXT,
datecreated: DATE_TIME,
like: LIKES
},
{
user: 'COMMENT_BY',
message: TEST,
dateCreated: DATE_TIME,
like: LIKES
}}}

下一主题Mongodb 特性