MongoDB中的數(shù)據(jù)具有靈活的模式。文檔在同一集合,但它們不需要具有相同的字段或結(jié)構(gòu)集合,集合文檔中的公共字段可以包含不同類型的數(shù)據(jù)。
MongoDB中的數(shù)據(jù)具有靈活的模式。與SQL數(shù)據(jù)庫不同,SQL數(shù)據(jù)庫必須在插入數(shù)據(jù)之前確定和聲明表的模式,MongoDB的集合不會(huì)強(qiáng)制執(zhí)行文檔結(jié)構(gòu)。這種靈活性有助于將文檔映射到實(shí)體或?qū)ο蟆?每個(gè)文檔可以匹配表示實(shí)體的數(shù)據(jù)字段,即使數(shù)據(jù)具有實(shí)質(zhì)性的變化。然而,集合中的文檔具有類似的結(jié)構(gòu)。
數(shù)據(jù)建模中的關(guān)鍵挑戰(zhàn)是平衡應(yīng)用程序的需求,數(shù)據(jù)庫引擎的性能特征和數(shù)據(jù)檢索模式。 在設(shè)計(jì)數(shù)據(jù)模型時(shí),請(qǐng)始終考慮數(shù)據(jù)的應(yīng)用程序使用情況(即數(shù)據(jù)的查詢,更新和處理)以及數(shù)據(jù)本身的固有結(jié)構(gòu)。
在MongoDB中設(shè)計(jì)架構(gòu)時(shí)有一些考慮:
假設(shè)客戶需要他的博客/網(wǎng)站的數(shù)據(jù)庫設(shè)計(jì),并查看RDBMS和MongoDB架構(gòu)設(shè)計(jì)之間的區(qū)別。網(wǎng)站有以下要求。
在RDBMS架構(gòu)中,上述要求的設(shè)計(jì)將具有最少的三個(gè)表。表與表之間的關(guān)系如下 -

而在MongoDB模式中,設(shè)計(jì)將有一個(gè)集合post,其結(jié)構(gòu)以下 -
{
_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
}
]
}
通過上面的示例說明可以知道,在顯示數(shù)據(jù)時(shí),在RDBMS中需要連接三個(gè)表,而在MongoDB中,數(shù)據(jù)將僅顯示在一個(gè)集合中。