Join 加入流星系列进行评分

Join 加入流星系列进行评分,join,meteor,publish,subscribe,Join,Meteor,Publish,Subscribe,假设我有两个集合:“电影”和“评论”。用户撰写关于电影的评论,并为每部电影分配0到10的评论分数。我想根据每部电影的平均评论分数,列出前20部电影。有人知道如何设置发布/订阅代码吗?它现在让我感到沮丧。我读过的所有资料都表明这是Meteor的薄弱环节,我似乎找不到可比的例子。每次发布评论时更新电影的平均值,并将该平均值存储在电影文档中。创建评论时需要做更多的工作,但是查询前20部电影之后就变得很简单了。解决方案是将平均评论分数直接存储在电影集合中,并在添加新评论时进行更新。这可以通过存储总评论分

假设我有两个集合:“电影”和“评论”。用户撰写关于电影的评论,并为每部电影分配0到10的评论分数。我想根据每部电影的平均评论分数,列出前20部电影。有人知道如何设置发布/订阅代码吗?它现在让我感到沮丧。我读过的所有资料都表明这是Meteor的薄弱环节,我似乎找不到可比的例子。

每次发布评论时更新电影的平均值,并将该平均值存储在电影文档中。创建评论时需要做更多的工作,但是查询前20部电影之后就变得很简单了。

解决方案是将平均评论分数直接存储在电影集合中,并在添加新评论时进行更新。这可以通过存储总评论分数和评论数量来实现,这样您就可以更新平均值,而无需检索所有其他评论。

我明白了。这是个好建议。用户仍然能够更新分数吗?我想我必须检查该用户/电影组合是否存在评论分数,如果存在,则从电影文档中减去旧的评论分数,然后添加新分数。听起来正确吗?或者我可以使用一个常规的upsert,做一些“var score=new score-old score”并将总数增加那么多(我从来没有做过,但听起来很简单)。谢谢!看起来我同时得到了两次答案!