【发布时间】:2018-10-03 15:06:42
【问题描述】:
我收集了 200,000 多条记录,其中包括一个浮点字段 amountAwarded(例如 12345.67、2342、22 等)。我正在使用 MongoDB 根据以下边界将这些聚合到存储桶中:
amountAwarded: [
{
$bucket: {
groupBy: '$amountAwarded',
boundaries: [0, 10000, 50000, 100000, 1000000, Infinity],
output: {
count: { $sum: 1 }
}
}
}
]
这按预期工作,我得到这个输出:
{
"amountAwarded": [
{
_id: 0,
count: 269
},
{
_id: 10000,
count: 67
},
// etc
]
}
我真正想要的是在输出中引用桶边界,例如:
{
"amountAwarded": [
{
_id: 0,
count: 269,
lowerBound: 0,
upperBound: 9999
}
]
}
这意味着我可以在前端构建一个显示存储桶的列表(例如£0 - £9999)。
我最接近的是将$min: "$amountAwarded"(和等效的$max)添加到output,这为我提供了分桶记录中该字段的上限/下限。这是不对的,因为数字显然来自数据(例如8762)而不是存储桶边界。
是否可以在聚合管道中引用匹配的存储桶边界,或者我必须在构面完成后手动构造它?
【问题讨论】:
标签: mongodb