マップリデュース後にソートしようとすると問題が発生します。コレクションには、ユーザーが添付された統計(スコアなど)があるため、ユーザーの最高スコアが検出されます。その部分は機能します。並べ替えは、リーダーボードの結果を並べ替えることです。これらの関数をjavascript変数に入れて、mongoコンソールで実行すると、単純なfind()。sort({'value.max.value':-1})が結果のコレクションで正常に機能しますが、取得できません。ここで動作します。(私の結果は順序付けられていない状態で戻ってきます)。
$query->map('function() {
var x = { value : parseInt(this.value), _id : this._id, date : this.postDate };
emit(this.user, { max : x });
}')
->reduce('function(key, vals) {
var res = vals[0];
for (var i=1; i<vals.length; i++)
{
if(vals[i].max.value > res.max.value)
res.max = vals[i].max;
}
return res;
}')
->sort('value.max.value', 'desc');