簡體   English   中英

嵌入式文檔與mongoose設計模型中的參考?

[英]Embedded document vs reference in mongoose design model?

假設我正在使用Node.js和mongoose構建一個討論論壇。 用戶可以擁有多個論壇,論壇可以有多個評論。 用戶也可以邀請其他用戶加入論壇。 因此,我的問題是關於使用參考或嵌入文檔的模型設計!

如果我使用嵌入式文檔,它看起來像:

var Comment = new Schema({ ... });

var Forum = new Schema({
    title: {type: String},
    content: {type: String},
    comments: [Comment],
    attendees: [User]
});

var User = new Schema({
    name: {type: String},
    email: {type: String},
    forums: [Forum]
});

var Account = mongoose.model('Account', User);

使用上面的設計,我苦苦掙扎:當用戶向論壇添加評論,並且該論壇在我的論壇中時,我認為我無法在論壇列表中獲得新評論的更新。 我呢? 在這種情況下,您知道如何使嵌入式文檔工作嗎?

因此,我想在貓鼬中使用引用 在這種情況下,我將有兩個集合: AccountForum 在這種情況下,向論壇添加新評論不是問題。 我對嗎?

這個應用程序的引用會比嵌入式文檔更好嗎?

提前致謝,

這主要取決於您將如何查詢和更新您的數據。 在這種情況下,一致性和文檔大小也很重要。 以下是引用或嵌入文檔時的一個很好的總結:

嵌入:

  • 小子文檔
  • 數據不會定期更改
  • 最終的一致性是可以接受的
  • 通過小額增長的文件
  • 您經常需要執行第二次查詢才能獲取的數據
  • 快速讀取

引用:

  • 大型子文檔
  • 易失性數據
  • 立即一致是必要的
  • 增長量大的文件
  • 您經常從結果中排除的數據
  • 快寫

這是我讀過的一本關於mongo的書的摘錄。 這些只是一般規則,但根據我的經驗,使用它們使得很容易引用或嵌入大多數時間。

在這種情況下,我寧願參考論壇。 但請考慮您的所有要求。 例如,如果您從用戶引用論壇,並且您需要查詢特定論壇的所有用戶,則在這種情況下查詢可能會很慢。 如果我是你,我會列出我需要的所有內容,然后使用一般規則將在嵌入和引用的優缺點之間找到平衡點。

希望能幫助到你!

就個人而言,我喜歡在像你這樣的情況下做參考。 通過這種方式,我可以從用戶,來自論壇的用戶,來自評論的論壇,來自用戶的論壇等獲得評論,而無需擔心進行復雜的嵌入式文檔查詢。 我甚至不打擾存儲嵌入式參考文檔。 如果論壇和評論之間存在一對多的關系,那么我會在論壇上存儲一個論壇參考,而論壇上沒有評論參考,因為當您從評論集合中添加/刪除評論時,您還必須去除嵌入來自論壇評論集的參考文件。

我可以使用論壇參考從評論中查詢論壇,我可以通過查詢該論壇參考的評論集合獲取論壇的所有評論(這只是一個ID號,直到mongoose為你填充幕后)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM