CouchDB视图结构

时间:2015-04-20 08:23:29

标签: couchdb

让我们说我有一些用户。他们有"科目"并且每个主题都具有优先级 - 这决定了该主题中用户的优先级。我有一些这样的情况,但现在让它成为用户,主题和优先事项。

我想显示已选择主题的用户,并按此主题的优先级对其进行排序。用户和子图像在很多对多的人中间。实现,这是示例用户结构:

{ name:"Nic", 
  subjects: [
   { name:"math", priority:10}, 
   { name:"english", priority: 11} ...]}

我应该如何组织视图结构?

第一个变体是创建视图by-subject,按主题键减少用户并获取" math"像_view/by-subjects?key="math"&reduce=true这样的用户。但是这种情况我必须在客户端应用程序中优先排序......

其次是为每个主题创建单独的视图,并将priority作为关键字发出。所以我可以从_view/math?descending=true获取数据并对其进行排序。但据我所知,每次新用户插入数据库时​​,所有42个视图都将被更新(如果我有42个科目)。在第一种情况下,我只有一个要更新的视图。

所以,问题是:哪种变体更适合CouchDB,或者更惯用?

1 个答案:

答案 0 :(得分:2)

如果你发光

[":subject",":user",":priority"]

作为密钥和请求?key="math",您将获得按字母顺序排列的用户及其优先级列表。

如果你发光

[":subject",":priority",":user"]

您获得按priority排序的相同列表。你也可以通过addin ?limit=10

来要求前十名