【发布时间】:2014-02-08 14:27:50
【问题描述】:
这是我的问题:我想创建一个网络,允许用户上传帖子并喜欢他们。
我认为我可以将每个帖子存储在一个名为“帖子”的集合中,而且我这样做没有问题。
但是我可以在哪里存储每个帖子的点赞以及相关数据(时间、用户来源等)? 我无法在帖子文档中执行此操作,因为文档的最大大小为 16MB,并且想象我将不得不为每个帖子记录数千个带有相关数据的喜欢,我无法做到这一点。
我可以将每个帖子与一个集合相关联,其中包括文档,并且每个文档都是类似的。但老实说,如果可能的话,我宁愿不要创造数百万的收藏品。
邮寄文件示例:
{_id: blabla, userfrom: {}, txt: "i am the post", time: {}, geo: {}, likes: {here i have to add as many likes as users clicks, and it can exceed 16MB}}
现在在“喜欢”中,我可以引用一个集合,但这是我不想做的。
我在 mongodb 中阅读了有关 gridstore 的信息,但我没有明白这一点。我可以将它用作大小可以趋于无限的文档吗?这样我就可以添加任意数量的记录了吗?所以使用网格商店我可以做类似的事情:
{_id: blabla, userfrom: {}, txt: "i am the post", time: {}, geo: {}, likes: {infinite records}}
有人可以帮我处理吗?谢谢你
【问题讨论】:
-
不确定您所说的“创建数以百万计的收藏”是什么意思。常见的方法是为每个赞创建一个包含一个文档的集合,其中包含对它所指的帖子的引用。为什么那行不通?
-
为什么不将喜欢的内容存储为文档?每个人都会有他们喜欢的帖子的参考 ID?并且,在帖子中记录总数,这样代码实际上不需要每次都计算。我敢打赌,您不需要在每次显示帖子时都获取每个“喜欢”的详细信息,因此最好不要将所有数据存储在一个文档中。
-
单一收藏。每个赞都需要一个名为
postId之类的字段,可以在查询中使用它来获取给定帖子的所有赞。 -
您也可以选择双重存储最近的点赞,在所有点赞的集合中,也可以在原始帖子文档中。例如,存储最后 50 个,以便每次都可以随帖子一起获取它们。
-
索引适用于集合中的所有文档
标签: node.js mongodb bigdata database