Sorting CouchDB Views By Value

前端 未结 7 1534
独厮守ぢ
独厮守ぢ 2020-12-04 08:52

I\'m testing out CouchDB to see how it could handle logging some search results. What I\'d like to do is produce a view where I can produce the top queries from the results

7条回答
  •  爱一瞬间的悲伤
    2020-12-04 09:08

    This is an old question but I feel it still deserves a decent answer (I spent at least 20 minutes on searching for the correct answer...)

    I disapprove of the other suggestions in the answers here and feel that they are unsatisfactory. Especially I don't like the suggestion to sort the rows in the applicative layer, as it doesn't scale well and doesn't deal with a case where you need to limit the result set in the DB.

    The better approach that I came across is suggested in this thread and it posits that if you need to sort the values in the query you should add them into the key set and then query the key using a range - specifying a desired key and loosening the value range. For example if your key is composed of country, state and city:

    emit([doc.address.country,doc.address.state, doc.address.city], doc);
    

    Then you query just the country and get free sorting on the rest of the key components:

    startkey=["US"]&endkey=["US",{}] 
    

    In case you also need to reverse the order - note that simple defining descending: true will not suffice. You actually need to reverse the start and end key order, i.e.:

    startkey=["US",{}]&endkey=["US"]
    

    See more reference at this great source.

提交回复
热议问题