我有一個蒙戈收集以下數據(數據收集):蒙戈DB合計不工作
{
"_id": ObjectId("54980efef7db7d9b018d375b"),
"sub_id": "1234567890",
"points": "10",
"oid": "1",
"name": "test",
"app": "e53abc6d12fea63c80e4c2e1d49e",
"source": "mysource",
"product_name": "browser",
"added": ISODate("2014-12-22T12:30:54.618Z"),
"added_human": "2014-12-22 06:30:54",
"checked": true
}
其實我需要找出按日期分組分的總和。 SQL查詢將如下所示: SELECT DATE(添加)爲point_date,SUM(points)AS total_points FROM mytable WHERE在'從'和'到'GROUP BY DATE(已添加)之間添加。
所以我用下面的聚合:
db.datacollection.aggregate(
{
$match:{
"added" : {$gte:ISODate("2014-12-01"), $lt:ISODate("2014-12-25")},
"source":"mysource"
},
$group : {
"_id" : { month: { $month: "$added" }, day: { $dayOfMonth: "$added" }, year: { $year: "$added" } },
"total_points":{$sum:"$points"}
}
}
);
但這正顯示出
"errmsg" : "exception: A pipeline stage specification object must contain exactly one field.",
這可怎麼固定的或者是有沒有做這種計算沒有更好的方法?
我認爲你應該將你的'points'數據類型字符串改爲整型或浮點型。 – Yogesh
是的。但是,我怎樣才能在飛行中做到這一點? –
您不會隨時更改數據類型,首先您應該將您的集合更新爲適當的數據類型,然後使用mongo聚合。爲了您的參考檢查這個http://stackoverflow.com/questions/18138750/mongodb-aggregate-sum – Yogesh