2013-04-10 43 views
0

考慮一個典型的博客應用程序,博客可以有很多帖子,帖子可以有很多評論。 假設我們想提供一個RESTfull API來訪問它。MongoDB中的關係(通過Mongoose)

如果我要使用關係數據庫來存儲這些數據,我會在posts表中有一個外鍵,在comments表中有一個外鍵給帖子。

當通過使用貓鼬MongoDB中,我看到三種不同的方式來設計的集合:

  1. 有三個類別:一爲博客,一個是員額和一個徵求意見。帖子的模式將有一個字段引用其博客,而註釋的模式將有一個字段引用其帖子。 (非常類似於關係解決方案)。

  2. 同樣,三個集合,但每個博客都有一個對帖子的引用數組,每個帖子都有一個引用數組。

  3. 只有一個包含子文檔和子子文檔的集合,其中博客包含一系列帖子,每個帖子都包含一系列評論。

哪一個是正確的?每一個的優缺點是什麼?

+1

開始[這裏](http://docs.mongodb.org/manual/core/data-modeling/)和[here](http://docs.mongodb.org/manual/use-cases/storing-註釋/)。老實說,沒有正確的答案。緩存頁面,文章和評論數據庫外部是一個非常明智的選擇,有助於緩解一些可能的問題。 – WiredPrairie 2013-04-11 00:20:28

回答

1

怎麼樣3集的方法,但

  1. 複製去年(N)與$切片運營商評論到郵政收集,從而保持 「最新評論」 列表短

  2. $ inc Post中的評論數,因此可以快速檢索每個帖子的評論數

  3. 複製或緩存博客中的博客信息,或者將摘要嵌入到博文中。

主要帶回家:讓它包含所有你想渲染的所有東西。