簡體   English   中英

CouchDB排名

[英]CouchDB Ranking

我試圖找出使用Couch db按等級排序的最佳方法。 我將文件設置在播放器數據庫中,如下所示:

{
   "_id": "user2",
   "_rev": "31-65e0e5bb1eba8d6a882aad29b63615a7",
   "username": "testName",
   "apps": {
       "app1": {
           "score": 1000
       },
       "app2": {
           "score": 1000
       },
       "app3": {
           "score": 1000
       }
   }
}

播放器可以為各種應用程序提供多個分數。 我正在嘗試找出最好的方法來吸引app1的前50名得分。

我認為一個想法可能是分別為每個應用程序存儲每個用戶的分數。 像這樣:-

{"app":"app1","user":"user_id","score":"9000"}

你可以寫一個地圖函數

emit([doc.app,doc.score],{_id:doc.user,score:doc.score})

然后像這樣查詢視圖

/view_name?include_docs=true&startkey=["app1",{}]&endkey=["app1"]&descending=true

通過這種安排,您可以按得分和應用程序名稱對視圖進行排序。 這是您得到的結果。

{"total_rows":2,"offset":0,"rows":[

{"id":"61181c784df9e2db5cbb7837903b63f5","key":["app1",10000],"value":

{"_id":"5002539daa85a05d3fab16158a7861c1","score":10000},"doc": {"_id":"5002539daa85a05d3fab16158a7861c1","_rev":"1-8441f2f5dbaaf22add8969cea5d83e1b","user":"jiwan"}}

{"id":"7f5d53b2da8ae3bea8e2b7ec74020526","key":["app1",9000],"value":

{"_id":"336c2619b052b04992947976095f56b0","score":9000},"doc": {"_id":"336c2619b052b04992947976095f56b0","_rev":"3-3e4121c1831d7ecafc056e71a2502f3a","user":"akshat"}} ]}

您的價值得分。 文件使用者。

編輯

哎呀! 我輸入了錯誤的startkeyendkey :)注意,它不是startKeystartkey同為endkey 另請注意,由於降序為true,因此我們會反轉鍵的順序。 現在應該可以正常工作了。

如需更多幫助,請查看

  1. 這個答案
  2. 這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM