微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在mongodb中找到多维最大值

如何解决在mongodb中找到多维最大值

| 如果我有这个收藏
{ \"humidity\" : 96.5812,\"temperature\" : 10.5006 }
{ \"humidity\" : 97.1184,\"temperature\" : 10.2808 }
{ \"humidity\" : 96.2882,\"temperature\" : 8.4493 }
{ \"humidity\" : 97.8266,\"temperature\" : 7.4481 }
{ \"humidity\" : 98.9255,\"temperature\" : 7.2772 }
{ \"humidity\" : 99.4628,\"temperature\" : 7.3993 }
{ \"humidity\" : 99.4383,\"temperature\" : 7.4237 }
{ \"humidity\" : 99.6825,\"temperature\" : 7.1307 }
{ \"humidity\" : 99.5116,\"temperature\" : 6.1539 }
{ \"humidity\" : 99.8779,\"temperature\" : 5.4701 }
如何使用mapreduce获得温度的最大值和最小值?     

解决方法

        
// Simple map function - just returns the temperature value
// for the record
var map = function() {
    emit(\'temperature\',this.temperature);
};

// A reduce function to find the minimum value in the reduced set
var reduce_min = function(key,values) {
    var min = values[0];
    values.forEach(function(val) {
        if (val < min) min = val;
    })
    return min;
};

// A reduce function to find the maximum value in the reduced set
var reduce_max = function(key,values) {
    var max = values[0];
    values.forEach(function(val){
        if (val > max) max = val;
    })
    return max;
}

// Use the mapReduce function to get the min and max
var min = db.temp.mapReduce(map,reduce_min,{out:{inline:1}}).results[0].value;
var max = db.temp.mapReduce(map,reduce_max,{out:{inline:1}}).results[0].value;
print(\"Min: \" + min + \",max: \" + max);
    ,        我喜欢上面的答案,但是这里有一些小的修改以清理您的代码。这将为您提供相同的输出,但是代码很少。您可以在线搜索Math.min()和Math.max()文档。基本上,这些是用于查找最小值和最大值的javascript函数。和\“ ... \”用于告诉Math.min()/ max()值是一个数组
var map = function() {
    emit(\'temperature\',values) {
    return Math.min(...values);
};

// A reduce function to find the maximum value in the reduced set
var reduce_max = function(key,values) {
    return Math.max(...values);
}

// Use the mapReduce function to get the min and max
var min = db.temp.mapReduce(map,max: \" + max);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。