Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB地图减少查找最大购买金额_Mongodb_Nosql - Fatal编程技术网

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结果输出到集合中
  • 根据数量建立索引
  • 按金额向下查询订单

对于“最大购买金额”有点模糊,您是指最大金额吗?抱歉,但我不太熟悉SQL语句……谢谢。还有一个问题,我可以原子化地进行这样的操作吗?因为我需要确保另一个请求不会覆盖输出集合。当然,您可以通过脚本自动完成。您可以使用来保持输出集合的最新状态,并记住确保您关心的字段上的索引比您更准确。为了获得更好的响应,我目前正在为MongoDB和Java/Spring容器制作一些POC。我开始使用增量Map/Reduce,我发现了一个问题,在我从初始订单集合中删除了具有特定userID的集合,并再次运行incremental MR函数后,仍然可以看到删除值的总和。如何在运行MR时删除这些过时的值?
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