让我们说我有一些用户。他们有"科目"并且每个主题都具有优先级 - 这决定了该主题中用户的优先级。我有一些这样的情况,但现在让它成为用户,主题和优先事项。
我想显示已选择主题的用户,并按此主题的优先级对其进行排序。用户和子图像在很多对多的人中间。实现,这是示例用户结构:
{ 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,或者更惯用?
答案 0 :(得分:2)
如果你发光
[":subject",":user",":priority"]
作为密钥和请求?key="math"
,您将获得按字母顺序排列的用户及其优先级列表。
如果你发光
[":subject",":priority",":user"]
您获得按priority
排序的相同列表。你也可以通过addin ?limit=10