我正在设计一个博客网站的新闻提要。我试图设计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