MongoDB 中的數(shù)據(jù)模式非常靈活。同一集合中的文檔不需要具有同一字段或結(jié)構(gòu),集合文檔的公用字段可能包含不同類型的數(shù)據(jù)。
假使一個(gè)客戶需要為他的博客站點(diǎn)設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù),讓我們來(lái)看看 RDBMS 與 MongoDB 在模式設(shè)計(jì)上的差異。網(wǎng)站需求如下所示:
在 RDBMS 中,設(shè)計(jì)一個(gè)能夠滿足上述需求的數(shù)據(jù)庫(kù)模式至少需要 3 個(gè)表。如下圖所示。
http://wiki.jikexueyuan.com/project/mongodb/images/rdbms.png" alt="rdbms1" />
在 MongoDB 中,設(shè)計(jì)出來(lái)的模式卻只有一個(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ù),在 RDBMS 中需要連接三張表,而在 MongoDB 中則只需要一個(gè)集合。