您可以尝试使用此map reduce命令:
// Variable for map
var _map = function () {
emit(null,this);
};
// Variable for reduce
var _reduce = function (key, values) {
var sum = 0;
var resultArray=[]
for(value in values){
sum=sum+values[value].cost;
if(sum<=60){
resultArray.push(values[value]);
}
}
var result = {};
result.selected=resultArray;
return result;
}
;
db.runCommand({
mapReduce: "01",
map: _map,
reduce: _reduce,
out: { "inline" : 1},
query: {},
sort: {cost:1},
inputDB: "testing",
});
})
按命令中指示的成本排序。可以使用查询对象在map reduce之前过滤文档。
它将输出
{
"_id" : null,
"value" : {
"selected" : [
{
"_id" : 4,
"dish" : "noodles",
"cost" : 23
},
{
"_id" : 2,
"dish" : "burger",
"cost" : 33
}
]
}
}
此时访问value.selected很容易得到结果。
希望有帮助。