gpt4 book ai didi

mongodb - 在 mongodb 中存储赞成票/反对票

转载 作者:行者123 更新时间:2023-12-02 01:54:43 26 4
gpt4 key购买 nike

我有一个帖子用户的集合,用户可以在其中对每个帖子进行赞成/反对。将其存储在 mongodb 数据库中以确保用户不能多次为给定文档投票的最佳方法是什么?

我想出的最简单的 nosql-ish 解决方案是存储在每个 Post 文档中投票的 user_ids 数组(甚至是 (user_id, vote) 数组,其中vote 为 +1 或 -1,以便用户能够更改他们的投票)。鉴于每个帖子都可以有数千票,从性能角度来看这是一个好主意吗?

像 Reddit 这样真正受欢迎的网站怎么样,热门帖子可以有数十万票?

最佳答案

MongoDB 文档目前限制为最大 16MB,因此假设 Gilbert 的计算准确,您将无法在 Post 中存储所有 600 万个 user_id > 文档。

但是,您可以考虑将投票存储在 User 文档中(即特定用户投票的 post_id)。用户对 600 万个不同帖子进行投票的可能性要小得多,因此这样您就不会很快达到大小限制。

处理此问题的另一种方法:如果您预计某个特定帖子会有很多投票,您可能需要将投票存储在 Post 文档之外的单独集合中,并执行额外的查询,类似于SQL 方式的多对多 JOIN 表:

user_votes { user_id: ObjectId(...), post_id: ObjectId(...), vote:-1 }

并在 (user_id, post_id) 上创建复合索引。

关于mongodb - 在 mongodb 中存储赞成票/反对票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com