我有发票数据,我想按时间段墙对它们进行分组。例如0-10和11-20:
我需要用mongoDB中的$aggregate来解决它们。
{
'_id': '1',
'value': 10,
'due_date': '20221001'
},
{
'_id': '2',
'value': 10,
'due_date': '20221012'
},
{
'_id': '2',
'value': 10,
'due_date': '20221030'
},
我需要按时间段0-10天、11-20天进行分组,并对值求和:对于上面的示例,结果为:
[{
"_id": '0-10 days',
"total": 10,
},
{
"_id": '11-20 days',
"total": 10,
},
{
"_id": '>20 days',
"total": 10,
}]
我试着:
['$facet' => [
['due_date_one' => [
['$match' => [
'due_date' => [
'$gt' => new UTCDateTime((new Carbon())-> subDays(100) -> getTimestamp()),
'$lte' => date('Y-m-d', strtotime('now'))
]
]
]],
]]
1条答案
按热度按时间9gm1akwq1#
您可以使用$bucket或添加几个$addFields和$group级:
蒙戈Playground示例-https://mongoplayground.net/p/B0zl_GGH4sG
示例文档:
汇总查询:
输出:(分组月份)
输出:(无分组月份)