gpt4 book ai didi

mongodb - 如何按月对文件进行分组?

转载 作者:可可西里 更新时间:2023-11-01 09:13:33 25 4
gpt4 key购买 nike

我在 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 的 aggregate 来计算我每个月的总交易额?

我试过:

db.getCollection('transaction').aggregate([
{ $group: {_id: "$timestamp", total: {$sum: "$nominal"} } }
])

但它失败了,因为我使用了 timestamp 而不是 month。我不想将 month 的另一个字段添加到交易数据。我考虑为 $group 管道定制一个返回月份值的函数。

最佳答案

你需要一个初步的$project使用 $month 的阶段运算符返回“月”。

 db.transaction.aggregate([
{ "$project": {
"nominal": 1,
"month": { "$month": "$timestamp" }
}},
{ "$group": {
"_id": "$month",
"total": { "$sum": "$nominal" }
}}
])

哪个返回:

{ "_id" : 12, "total" : 30.121 }
{ "_id" : 11, "total" : 76.363 }

关于mongodb - 如何按月对文件进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com