我有兩個類別:Mongoose:populate()/ DBref或數據重複?
- 用戶
- 上傳
每個上傳都有一個與之關聯的User
,我需要知道他們的詳細資料時Upload
觀察。是否最好在「上傳」記錄中複製這些數據,或者使用populate()從_id
引用的用戶集合中提取這些詳細信息?
OPTION 1
var UploadSchema = new Schema({
_id: { type: Schema.ObjectId },
_user: { type: Schema.ObjectId, ref: 'users'},
title: { type: String },
});
OPTION 2
var UploadSchema = new Schema({
_id: { type: Schema.ObjectId },
user: {
name: { type: String },
email: { type: String },
avatar: { type: String },
//...etc
},
title: { type: String },
});
隨着 '選項2',如果任何在Users
收集的數據發生變化的我將有通過al更新l關聯Upload
記錄。另一方面,使用「選項1」,我可以放鬆心情,讓populate()
確保始終顯示最新的用戶數據。
使用populate()
的開銷是否顯着?這種常見情況下的最佳做法是什麼?
那麼如何更新重複日期呢?在博客示例中,如果我們正在複製用戶信息(例如名稱)的快速單聲道評論記錄的來臨。如果該用戶更改了他們的名字,我們需要在數據庫中更新他們名字的每個實例,在這種情況下,他們每次發表評論。 – wilsonpage
你需要問自己,你會改變你的用戶名多少次?也許一個大規模更新會在你的情況下,或者只是一個ObjectId的用戶文件。對象嵌入是一個選項,而不是一個mongodb道場。 – kilianc