2016-12-16 235 views
0

这里如何将NumberString转换为数字,内部mongoDB聚合查询?

-------水彩莫代尔------------------------------

waterColorModal = { 
    dateField : { type : Date }, 
    tempArray : { type : JSON } 
} 

-------开始查找查询------------------------------

var dataFineQuery = {_id:XXXXXXX}

waterColorModal.aggregate([ 
    { $match : dataFineQuery }, 
    { $project : { dateField : 1, tempArray : 1} }, 
    { $group : 
     { _id : { "$year" : "$dateField" }, 
     total : { 
      $sum : parseFloat({ "$arrayElemAt": [ "$tempArray", 1 ]}) 
       } 
    } 
], function (err, result) { 

console.log('-------------------------') 
console.log(result) 
console.log('-------------------------') 
) 

一个水彩色系列

{ _id: 585392c8206ff324f955a4f0, 
    dateField : Sun Jan 01 2012 00:00:00 GMT+0530 (+0530), 
    tempArray: [ '2344', '23423', '23432', '32432', '2342' ] 
} 

我要的是, 计算总价值为每年

tempArray [1] < - 只考虑总数

感谢, 任何建议意见或回答

回答

1

你需要map-reduce才能执行JavaScript方法。您可以尝试
代码:

db.runCommand({ 
    mapReduce: "waterColorModal", 
    map: function() { 
     for (var i = 0; i < this.tempArray.length; i++) { 
      emit(new Date(this.dateField.toString()).getFullYear(), parseFloat(this.tempArray[i])); 
     } 

    },reduce: function(yearKey, totalValue) { 
     count = 0; 
     for (var index = 0; index < totalValue.length; ++index) { 
      count += totalValue[index]; 
     } 
     return count; 
    }, 
    out: { 
     inline: 1 
    } 
}) 
相关问题