我有一些数据order
文档如:
{ "_id": "...", "orderTotal": { "amount" : "10.99", "unit": "USD"}, "orderTime": "...", ... }
{ "_id": "...", "orderTotal": { "amount" : "9.99", "unit": "USD"}, "orderTime": "...", ... }
{ "_id": "...", "orderTotal": { "amount" : "8.99", "unit": "USD"}, "orderTime": "...", ... }
我想按天查询所有订单组的orderTotal:
db.getCollection('order').aggregate([
{
'$group' : {
'_id': { day: { $dayOfMonth: "$orderTime"}, month: {$month: "$orderTime"}, year: { $year: "$orderTime" }},
'totalAmount': { $sum: '$itemTotal.amount' },
'count': { $sum: 1 }
}
}
])
but got:
{
"_id" : {
"day" : 12,
"month" : 12,
"year" : 2016
},
"totalAmount" : 0,
"count" : 4607.0
}
the 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 }
}
}
])
got
{
"_id" : {
"day" : 12,
"month" : 12,
"year" : 2016
},
"totalAmount" : NaN,
"count" : 4607.0
}
我无法更新order
要更改的文档itemTotal.amount
像其他问题所说的那样浮动:
db.order.find().forEach(function(data) {
db.order.update({
"_id": data._id,
"itemTotal.amount": data.itemTotal.amount
}, {
"$set": {
"itemTotal.amount": parseFloat(data.itemTotal.amount)
}
});
})
我没有权限执行此操作。
那么,我怎样才能得到每天的总和呢?