Попытавшись сделать это solution и сделав еще один шаг, у меня есть еще один вопрос относительно mongodb.Сортировка после карты/Уменьшить с помощью встроенного результата
Мой вопрос:
Как я могу сортировать вывод:
doc = {_id : 16, days : { 1 : 123, 2 : 129, 3 : 140, 4 : 56, 5 : 57, 6 : 69, 7 : 80 }};
db.so.insert(doc);
map = function() {
emit(this._id, this.days["1"]);
emit(this._id, this.days["3"]);
emit(this._id, this.days["7"]);
}
reduce = function (k, vals) {
var sum = 0;
vals.forEach(function (v) {sum += v;});
return sum;
}
res = db.so.mapReduce(map, reduce, {out : {inline : 1}});
res.find();
Выход таков:
"results" : [
{
"_id" : 16,
"value" : 225
},
{
"_id" : 33,
"value" : 230
},
{
"_id" : 302,
"value" : 274
}
]
Теперь я хочу, чтобы отсортировать результат:
res.find().sort({ "results.value":-1 });
что приводит к ошибке:
Sat Mar 31 01:15:45 TypeError: res.find().sort({'results.value':-1}) is not a function (shell):1
ли кто-нибудь может мне помочь?
, вы думаете, что это будет возможно с новой структурой агрегации манго? – MadeOfSport
Да, я считаю, что вы можете сделать это с помощью структуры агрегации. Похоже, вы '$ project'' _id' и 'sum', а затем используете' $ sort'. Это должно быть довольно легко проверить, так как 2.1 доступен для загрузки. –
Вы правы. Это отлично работает – MadeOfSport