2016-12-16 243 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 
    } 
}) 
相關問題