快速问题我在 mongodb 中有一个文章列表,我希望用户能够对文章投赞成票或反对票。
我的第一种方法是在文章集中有两行,分别称为“赞成票”和“反对票”,它们的数字如下
点赞数:360
否决票:102;
那么我需要通过求和来订购
赞成票-反对票这将显示该文章的总喜欢度。
我的问题是在 mongoDB 中这是最好的方法还是我最好通过一票“投票”然后通过该投票来排序。
谢谢
当您这样做时,您不会跟踪哪个用户已经投票,因此用户可以多次投票。这肯定不符合你的利益。
因此,我会在每篇文章中添加一个数组“votes”,其中包含每个投票的一个对象,该对象唯一标识进行投票的用户:
votes: [
{ voter:"name or ID or IP address or some other unique identifier for the person who voted",
vote:-1 },
{ voter:"someone else",
vote:1 },
{ voter:"and someone entirely different",
vote:-1 }
]
当您在文章 ID 和 votes.voter 上创建唯一索引时,您就已经确保没有人可以为一篇文章投票两次。
当您使用值“-1”表示反对票,使用“1”表示赞成票时,您可以使用 $sum 聚合函数计算一篇文章的总分(当您觉得以后,它也可以很容易地让您引入加权投票)喜欢它)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)