2016-12-13 2 views
5

私は同じようorderドキュメント内のいくつかのデータを持っている:私はその日によってすべての注文のグループのたOrderTotalを照会するmongodbどのように合計文字列を照会するのですか?

{ "_id": "...", "orderTotal": { "amount" : "10.99", "unit": "USD"}, "orderTime": "...", ... } 
{ "_id": "...", "orderTotal": { "amount" : "9.99", "unit": "USD"}, "orderTime": "...", ... } 
{ "_id": "...", "orderTotal": { "amount" : "8.99", "unit": "USD"}, "orderTime": "...", ... } 

db.getCollection('order').aggregate([ 
    { 
    '$group' : { 
     '_id': { day: { $dayOfMonth: "$orderTime"}, month: {$month: "$orderTime"}, year: { $year: "$orderTime" }}, 
     'totalAmount': { $sum: '$itemTotal.amount' }, 
     'count': { $sum: 1 } 
    } 
    } 
]) 

が、得た:

{ 
    "_id" : { 
     "day" : 12, 
     "month" : 12, 
     "year" : 2016 
    }, 
    "totalAmount" : 0, 
    "count" : 4607.0 
} 

amount文字列です。 parseFloatを使用しますが、NaNを取得しました。

db.getCollection('order').aggregate([ 
    { 
    '$group' : { 
     '_id': { day: { $dayOfMonth: "$orderTime"}, month: {$month: "$orderTime"}, year: { $year: "$orderTime" }}, 
     'totalAmount': { $sum: parseFloat('$itemTotal.amount') }, 
     'count': { $sum: 1 } 
    } 
    } 
]) 

は、私は他の質問のように浮かぶようにitemTotal.amountを変更するorder文書を更新することはできません

{ 
    "_id" : { 
     "day" : 12, 
     "month" : 12, 
     "year" : 2016 
    }, 
    "totalAmount" : NaN, 
    "count" : 4607.0 
} 

を得たと述べた:

db.order.find().forEach(function(data) { 
    db.order.update({ 
     "_id": data._id, 
     "itemTotal.amount": data.itemTotal.amount 
    }, { 
     "$set": { 
      "itemTotal.amount": parseFloat(data.itemTotal.amount) 
     } 
    }); 
}) 

は、私はこれを行うには権限を持っていません。 それでは、どのように日ごとに合計を得ることができますか?

答えて

関連する問題