Den*_*Hiu 7 mongodb mongodb-query aggregation-framework
我在 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},
]
Run Code Online (Sandbox Code Playgroud)
我如何使用 mongodb 的聚合()来计算我每个月的总交易量?我试着用
db.getCollection('transaction').aggregate([
{ $group: {_id: "$timestamp", total: {$sum: "$nominal"} } }
])
Run Code Online (Sandbox Code Playgroud)
它失败了,因为我使用timestamp而不是month. 我不想为month交易数据添加另一个字段。我想为 $group 管道定制一个返回月值的函数。是否可以 ?如果是这样,如何?
您需要一个初步$project阶段,您可以使用$month运算符返回“月份”。
db.transaction.aggregate([
{ "$project": {
"nominal": 1,
"month": { "$month": "$timestamp" }
}},
{ "$group": {
"_id": "$month",
"total": { "$sum": "$nominal" }
}}
])
Run Code Online (Sandbox Code Playgroud)
返回:
{ "_id" : 12, "total" : 30.121 }
{ "_id" : 11, "total" : 76.363 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8611 次 |
| 最近记录: |