我正在考虑将 CouchDB 用于即将推出的网站,但就如何为该网站实施用户评分系统而言,我有点困惑。基本上,每个内容项都可以由给定用户评分。在 CouchDB 模型中,哪种方式最有意义?我认为最干燥和最合乎逻辑的方法是拥有 3 种不同的文档类型,内容、用户和一个看起来像这样的 user_rating 文档。
{ 用户 ID:“用户 ID” content_id: "内容 ID" 评分:6 }
然后,我将创建一个视图,其中地图是由内容文档 id 键入的所有内容文档和 user_rating 文档的集合,reduce 计算评级的平均值并返回由内容文档 id 键入的内容文档。
这是最好的方法吗?我还没有找到很多关于 CouchDB 最佳实践的资源,所以我不太确定所有这些东西。
我的结论:下面接受的答案(我几乎要实现的)确实有效,但请注意,文档需要由内容文档 ID 键入,这使得基于其他文档属性的高级查询很麻烦。我将回到 SQL 来满足我在这个应用程序中的需求。