MongoDB数据模型

在 MongoDB 中存储数据非常灵活,它与关系型数据库完全不同,在关系型数据库中,插入数据之前必须先确定数据表的结构并创建数据表。而 MongoDB 中对文档的结构没有强制要求,只要合理即可。

在龙岗等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站制作 网站设计制作按需设计,公司网站建设,企业网站建设,品牌网站建设,营销型网站,外贸网站制作,龙岗网站建设费用合理。

数据模型设计

MongoDB 提供了两种数据模型,分别是嵌入式数据模型和规范化数据模型,您可以根据需要使用其中的任何一种。

在 MongoDB 中模型设计需要注意以下几点:

  • 要根据具体的项目需求来选择合适的设计模式;
  • 如果是要同时使用的数据,您可以将它们合并到一个文档中,否则可以选择将它们分成若干个文档;
  • 可以有适当的数据冗余,因为与计算时间相比,磁盘空间更便宜;
  • 针对最常用的用例优化您的模型;
  • 写入时执行连接,而不是读取时执行连接;
  • 在模式中执行复杂聚合。

嵌入式数据模型

嵌入式数据模型也称为非规范化数据模型,在该模型中您可以将所有相关的数据存储到一个文档中,例如我们在三个不同的文档中分别存储了一个员工的个人信息、联系方式和地址等信息,您还可以将这些信息整合到一个文档中,如下所示:

{
    _id: ObjectId("601f4be6e646844cd045c8a4"),
    Emp_ID: "10025AE336",
    Personal_details:{
        First_Name: "Radhika",
        Last_Name: "Sharma",
        Date_Of_Birth: "1995-09-26"
    },
    Contact: {
        e-mail: "biancheng.net@gmail.com",
        phone: "9848022338"
    },
    Address: {
        city: "Hyderabad",
        Area: "Madapur",
        State: "Telangana"
    }
}

规范化数据模型

在规范化数据模型中,您可以通过引用来将原始文档与子文档关联起来,例如您可以将上面的文档信息以规范化数据模型重写为以下几个文档:

Employee:

{
    _id: ObjectId("601f4be6e646844cd045c8a4"),
    Emp_ID: "10025AE336"
}

Personal_details:

{
    _id: ObjectId("601f50bae646844cd045c8a5"),
    empDocID: ObjectId("601f4be6e646844cd045c8a4"),
    First_Name: "Radhika",
    Last_Name: "Sharma",
    Date_Of_Birth: "1995-09-26"
}

Contact:

{
    _id: ObjectId("601f50bae646844cd045c8a6"),
    empDocID: ObjectId("601f4be6e646844cd045c8a4"),
    e-mail: "biancheng.net@gmail.com",
    phone: "9848022338"
}

Address:

{
    _id: ObjectId("601f50bae646844cd045c8a7"),
    empDocID: ObjectId("601f4be6e646844cd045c8a4"),
    city: "Hyderabad",
    Area: "Madapur",
    State: "Telangana"
}

【示例】假设我们需要为某个博客或网站进行数据库设计,网站的具体要求如下:

  • 每个帖子都有唯一的标题、描述和网址;
  • 每个帖子可以有一个或多个标签;
  • 每个帖子都有其发布者的名字和喜欢的人数;
  • 每个帖子都可以有零个或多个评论,评论中包括他们的名字、信息、数据、时间和喜好。

在使用关系型数据库来实现上述需求时至少需要创建三个表,如下图所示:



图:关系型数据库架构设计

若使用 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
       }
    ]
}

网站标题:MongoDB数据模型
地址分享:http://www.shufengxianlan.com/qtweb/news3/538453.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联