我在尝试对 map reduce 进行排序时遇到问题。该集合具有附加用户的统计信息(如分数),因此它正在查找用户的最高分数。该部分有效,排序是然后对排行榜的这些结果进行排序。我已将这些函数放入 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');