如何解决如何根据某些条件获得最大的文档价值
我有以下简化的MongoDB集合
{
"_id":1,"restaurant":"Gloriuos Food","cuisine":"Afghan","grades":[
{ "grade":"A","score":12
},{
"grade":"B","score":8
}
]
}
{
"_id":2,"restaurant":"Ariana","score":8
},"score":18
}
]
}
{
"_id":3,"restaurant":"Seuda","cuisine":"American","score":4
},]
}
{
"_id":4,"restaurant":"Carvel","score":8
}
]
}
我想拥有一个新集合,其中的关键是美食的类型,而值是饭店的名称,在所有具有相同美食类型的饭店中,得分最高的分别是相应的得分。 PS:分数仅基于成绩数组的第一个值。
查看示例的预期结果
{"_id":"Afghan","value":["Gloriuos Food",12]}
{"_id":"American","value":["Carvel",8]}
此结果也有效
{"_id":"Afghan","value":{"Gloriuos Food",12}}
{"_id":"American","value":{"Carvel",8}}
我正在尝试以下代码,但未产生预期的结果
var mapFunction = function(){
emit(this.cuisine,[this.restaurant,this.grades[0].score]);
};
var reduceFunction = function(keys,values){
var ans;
var maxi=0;
for(var ele in values){
if(ele[1]>maxi){
maxi=ele[1]
ans=ele
}
}
return ans;
};
db.restaurant.mapReduce(mapFunction,reduceFunction,{out:"cuisine"})
最后一个代码产生以下结果:
{ "_id" : "Afghan","value" : null }
{ "_id" : "American","value" : null }
我也尝试了其他方法,但是没有用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。