mongoDB 中的点赞数

Mor*_*sda 1 database bigdata mongodb node.js

这是我的问题:我想创建一个网络,允许用户上传帖子并喜欢它们。

我想我可以将每个帖子存储在一个名为“帖子”的集合中,并且这样做没有问题。

但是我可以在哪里存储每个帖子的点赞以及相关数据(时间、用户来源等)?我无法在帖子文档中执行此操作,因为文档的最大大小为 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}}

有人可以帮我处理吗?谢谢

Phi*_*ipp 5

当你不想嵌入点赞时,你必须采用关系方式。

创建另一个“喜欢”集合,其中每个文档都有一个字段来说明它适用于哪个帖子。为了避免必须计算点赞集合中的所有条目来获取帖子的点赞数,您还应该将当前计数存储在帖子文档中。

关于 GridFS:我认为它不会对您有帮助。它不应该用于文档。其目的是在数据库中存储大型二进制文件。