- MongoDB 教程
- MongoDB - 首頁
- MongoDB - 概述
- MongoDB - 優勢
- MongoDB - 環境配置
- MongoDB - 資料建模
- MongoDB - 建立資料庫
- MongoDB - 刪除資料庫
- MongoDB - 建立集合
- MongoDB - 刪除集合
- MongoDB - 資料型別
- MongoDB - 插入文件
- MongoDB - 查詢文件
- MongoDB - 更新文件
- MongoDB - 刪除文件
- MongoDB - 投影
- MongoDB - 限制記錄數
- MongoDB - 排序記錄
- MongoDB - 索引
- MongoDB - 聚合
- MongoDB - 複製
- MongoDB - 分片
- MongoDB - 建立備份
- MongoDB - 部署
- MongoDB - Java
- MongoDB - PHP
- 高階 MongoDB
- MongoDB - 關係
- MongoDB - 資料庫引用
- MongoDB - 覆蓋查詢
- MongoDB - 查詢分析
- MongoDB - 原子操作
- MongoDB - 高階索引
- MongoDB - 索引限制
- MongoDB - ObjectId
- MongoDB - MapReduce
- MongoDB - 文字搜尋
- MongoDB - 正則表示式
- 使用 Rockmongo
- MongoDB - GridFS
- MongoDB - 固定大小集合
- 自動遞增序列
- MongoDB 有用資源
- MongoDB - 問答
- MongoDB - 快速指南
- MongoDB - 有用資源
- MongoDB - 討論
MongoDB - 資料建模
MongoDB 中的資料具有靈活的模式。同一個集合中的文件不必具有相同的欄位集或結構。集合文件中的公共欄位可以儲存不同型別的資料。
資料模型設計
MongoDB 提供兩種型別的資料模型:嵌入式資料模型和規範化資料模型。根據需求,您可以在準備文件時使用任一模型。
嵌入式資料模型
在此模型中,您可以將所有相關資料(嵌入)到單個文件中,這也被稱為非規範化資料模型。
例如,假設我們正在獲取三個不同文件中員工的詳細資訊,即 Personal_details、Contact 和 Address,您可以將這三個文件嵌入到單個文件中,如下所示:
{
_id: ,
Emp_ID: "10025AE336"
Personal_details:{
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "1995-09-26"
},
Contact: {
e-mail: "radhika_sharma.123@gmail.com",
phone: "9848022338"
},
Address: {
city: "Hyderabad",
Area: "Madapur",
State: "Telangana"
}
}
規範化資料模型
在此模型中,您可以使用引用來引用原始文件中的子文件。例如,您可以使用規範化模型重寫上述文件為
員工
{
_id: <ObjectId101>,
Emp_ID: "10025AE336"
}
個人詳細資訊
{
_id: <ObjectId102>,
empDocID: " ObjectId101",
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "1995-09-26"
}
聯絡方式
{
_id: <ObjectId103>,
empDocID: " ObjectId101",
e-mail: "radhika_sharma.123@gmail.com",
phone: "9848022338"
}
地址
{
_id: <ObjectId104>,
empDocID: " ObjectId101",
city: "Hyderabad",
Area: "Madapur",
State: "Telangana"
}
在 MongoDB 中設計模式時的注意事項
根據使用者需求設計模式。
如果您將一起使用物件,請將它們組合到一個文件中。否則將它們分開(但請確保不需要連線)。
複製資料(但要有限制),因為磁碟空間比計算時間便宜。
在寫入時進行連線,而不是在讀取時進行連線。
針對最頻繁的用例最佳化模式。
在模式中進行復雜的聚合。
示例
假設客戶需要為其部落格/網站設計資料庫,並檢視 RDBMS 和 MongoDB 模式設計之間的差異。網站具有以下要求。
每篇文章都有唯一的標題、描述和 URL。
每篇文章可以有一個或多個標籤。
每篇文章都有其釋出者的名稱和點贊總數。
每篇文章都有使用者提供的評論,以及他們的姓名、訊息、日期時間和點贊。
每篇文章可以有零個或多個評論。
在 RDBMS 模式中,上述要求的設計至少需要三個表。
而在 MongoDB 模式中,設計將擁有一個名為 post 的集合,以及以下結構:
{
_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 中,資料將僅從一個集合中顯示。
廣告