2016-12-16 4 views
0

ここmongoDB集計クエリの内部でNumberStringをNumberに変換する方法は?

-------水彩モーダル------------------------------

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

を 任意の提案のコメント、

感謝合計カウントのために考えるかお答えしますJavaScriptメソッドを実行するにはmap-reduceが必要です。お試しください
コード:

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 
    } 
}) 
関連する問題