我正在設計一個博客網站的新聞提要。我試圖設計Feed,以便讓來自朋友的近期活動的博客將這些博客保留在Feed的頂部,同時讓您無需參與向列表底部倒下。基本上,想想你的Facebook飼料,但博客。MongoDB Feed設計和查詢
這裏是目前的設計我有,但我願意接受建議,使這個更容易從選擇:
{
_id: 1,
author: {first: "John", last: "Doe", id: 123},
title: "This is a test post.",
body: "This is the body of my post."
date: new Date("Feb 1, 2013"),
edited: new Date("Feb 2, 2013"),
comments: [
{
author: {first: "Jane", last: "Doe", id: 124},
date: new Date("Feb 2, 2013"),
comment: "Awesome post."
},
],
likes: [
{
who: {first: "Black", last: "Smith", id: 125},
when: new Date("Feb 3, 2013")
}
],
tagged: [
{
who: {first: "Black", last: "Smith", id: 126},
when: new Date("Feb 4, 2013")
}
]}
問題1:假設我的朋友們的ID 124和125,我該如何選擇該提要使得該帖子在結果中的順序是由他們而不是由稍後在提要中標記的用戶126所確定的。
問題2:這個單一的博客集合是一個好的設計,還是應該將操作規範化爲一個單獨的集合?
我想更詳細地瞭解如何爲轉儲用戶供稿事件信息設置單獨的集合。你的意思是會有一個所有用戶事件進入的收集設置?如果是這樣,那麼如何刪除列表中的重複內容,因爲如果對帖子有2條評論,那麼您有2條活動,並且您不希望帖子在該Feed中顯示兩次。最後,是否可以使用1查找查詢從基於事件表的帖子表中選擇數據?謝謝! – Glitches 2013-03-01 00:25:19
有兩種方法可以做到這一點。要麼是每個文檔都是供稿事件的集合,要麼是每個文檔都是用戶的完整供稿。各有優點和缺點。如果您確定在最近的1000個Feed事件上進行了限制,我將使用該文檔來表示整個Feed策略。 – 2013-03-01 00:27:38
我在編輯我的評論,因爲你回答:)請參閱上面的評論。您將整個Feed作爲文檔的想法非常有趣。在那種情況下,你會如何更新Feed?我想你仍然需要查詢數據庫才能找到新數據來對Feed進行排序。這可能會破壞目的,因爲您將執行更新Feed的工作,以使其上的數據儘可能靠近生活。 – Glitches 2013-03-01 00:38:53