开发学院

您的位置:首页>教程>正文

教程正文

MongoDB 数据建模

MongoDB 数据建模

  MongoDB中的数据具有灵活的模式。文档位于同一集合中。它们不需要具有相同的字段集或结构,集合文档中的公共字段可能包含不同类型的数据。

在MongoDB中设计模式时的一些注意事项

  •   根据用户需求设计模式。

  •   如果要一起使用对象,请将它们合并到一个文档中。否则将它们分开(但确保不需要连接)。

  •   复制数据(但有限),因为磁盘空间比计算时间便宜。

  •   写入时加入,而不是读取时加入。

  •   针对最常见的用例优化模式。

  •   在架构中执行复杂聚合。

例子

  假设客户端需要为其博客/网站设计数据库,并了解RDBMS和MongoDB模式设计之间的差异。网站有以下要求。

  •   每个帖子都有唯一的标题、描述和URL。

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

  •   每篇文章都有其出版商的名字和喜欢的总数。

  •   每个帖子都有用户给出的评论以及他们的名字、消息、数据时间和喜好。

  •   在每个帖子上,可以有零个或多个评论。

  •   在RDBMS模式中,针对上述需求的设计将具有至少三个表

rdbms.png

  而在MongoDB模式中,设计将具有一个收集帖子和以下结构:

{
   _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: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}

  因此,在显示数据时,在RDBMS中需要连接三个表,而在MongoDB中,数据将只显示在一个集合中。