4
我有交易數據的集合在MongoDB中,像這樣的:如何按月在mongodb中對文檔進行分組?
[
{timestamp: ISODate("2015-11-10T11:33:41.075Z"), nominal: 25.121},
{timestamp: ISODate("2015-11-22T11:33:41.075Z"), nominal: 25.121},
{timestamp: ISODate("2015-11-23T11:33:41.075Z"), nominal: 26.121},
{timestamp: ISODate("2015-12-03T11:33:41.075Z"), nominal: 30.121},
]
我如何使用MongoDB的骨料()每個月要計算我總交易? 我試圖用
db.getCollection('transaction').aggregate([
{ $group: {_id: "$timestamp", total: {$sum: "$nominal"} } }
])
它失敗了,因爲我用timestamp
,而不是month
。我不想爲交易數據添加month
的另一個字段。我想爲$ group管道定製一個返回月份值的函數。 這可能嗎?如果是這樣,怎麼樣?
這將很好地工作只有當你只有不到12個月的歷史數據庫。正確的實現應該返回年份數據。 – sorin
@sorin from mongodb 3.0+您可以使用$ dateToString而不是$ month,並且您可以傳遞格式(參考:https://docs.mongodb.com/manual/reference/operator/aggregation/dateToString/) – axelvnk
或者if你低於3.0你可以破解你的方式到日期的連接版本。您需要2個項目階段,一個分別格式化$ month和$ year。然後另一個階段使用$ concat並且連接兩個新字段。不要忘記在年份和月份使用substr,因爲你不能連續整數。 – axelvnk