MongoDB - 数据建模

MongoDB中的数据在同一集合中具有灵活的schema.documents.它们不需要具有相同的字段或结构集,并且集合文档中的公共字段可以包含不同类型的数据.

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

  • 根据用户要求设计架构.

  • 如果要将对象组合在一起,请将对象合并到一个文档中.将它们分开(但要确保不需要连接).

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

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

  • 优化模式对于最常见的用例.

  • 在架构中进行复杂聚合.

示例

假设客户需要为他的博客/网站设计数据库,并查看RDBMS和MongoDB架构设计之间的差异.网站有以下要求.

  • 每个帖子都有唯一的标题,描述和网址.

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

  • 每个帖子都有其出版商的名称和喜欢的总数.

  • 每个帖子都有评论用户提供的名称,消息,数据时间和喜欢.

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

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

 RDBMS模式设计

在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中,数据将仅显示在一个集合中.