在couchdb中对值进行排序

时间:2014-09-04 17:06:05

标签: sorting couchdb

我试图从这个观点中取回分数

"scores": {
    "map": "function(doc) { emit(doc.appName, {_id:doc.username, username:doc.username, credits:doc.credits, avatar:doc.avatar}) }"
},

我传入appname并返回分数。问题是分数不能正确排序。当我尝试对它们进行排序时,它们只按第一个数字排序,所以

1500
50
7
900

正如您所看到的,第一个数字是按ASC排序的,但整数本身并非如此。如果appname是密钥,是否可以让couchdb对分数进行排序?

2 个答案:

答案 0 :(得分:1)

doc.appName一个字符串?把它变成一个数字:

function(doc) { 
    emit(parseInt(doc.appName), {_id:doc.username, username:doc.username, credits:doc.credits, avatar:doc.avatar});
    //   ^^^^^^^^
}

答案 1 :(得分:0)

使用复杂的密钥:

emit([doc.appName, doc.score], null)

然后使用范围查询:

startkey=["app1", 0]&endkey=["app1", {}]