MongoDB地图减少查找最大购买金额
我有一个购买交易的集合:MongoDB地图减少查找最大购买金额,mongodb,nosql,Mongodb,Nosql,我有一个购买交易的集合: {....,"userId": "1","amount":3,....} {....,"userId": "1","amount":1,....} {....,"userId": "2","amount":4,....} {....,"userId": "1","amount":2,....} 我需要打印带有最大购买金额和金额本身的userID 我可以使用map reduce获得购买总额: function map(){ emit(this.userID,{a
{....,"userId": "1","amount":3,....}
{....,"userId": "1","amount":1,....}
{....,"userId": "2","amount":4,....}
{....,"userId": "1","amount":2,....}
我需要打印带有最大购买金额和金额本身的userID
我可以使用map reduce获得购买总额:
function map(){
emit(this.userID,{amount:this.amount});
}
然后减少:
function reduce(key,value){
var sum = 0;
for ( var i=0; i<value.length; i++ ) {
sum += value[i].amount;
}
return sum;
}
- 将map/reduce结果输出到集合中
- 根据数量建立索引
- 按金额向下查询订单
select MAX(tbl.amn), tbl.uid from
(select o, userID as uid, SUM(o.amount) as amn from order o GROUP BY o.userID ) as tbl GROUP BY tbl.uid