Như ở MongoDB 2.4, bạn không thể triển khai bất kỳ chức năng tùy chỉnh nào trong Khung tổng hợp. Nếu bạn muốn $group
bởi một hoặc nhiều trường, bạn cần thêm các trường đó thông qua các toán tử và biểu thức tổng hợp hoặc thông qua một bản cập nhật rõ ràng () nếu bạn không muốn tính toán mỗi lần.
Sử dụng Khung tổng hợp, bạn có thể thêm một bucket
được tính toán trong một $project
bước quy trình với $cond
nhà điều hành
.
Đây là một ví dụ về tính toán phạm vi dựa trên numberField
sau đó có thể được sử dụng trong $group
đường ống cho sum / avg / etc:
db.data.aggregate(
{ $project: {
numberfield: 1,
someotherfield: 1,
bucket: {
$cond: [ {$and: [ {$gte: ["$numberfield", 1]}, {$lte: ["$numberfield", 20]} ] }, '1-20', {
$cond: [ {$lt: ["$numberfield", 41]}, '21-40', {
$cond: [ {$lt: ["$numberfield", 61]}, '41-60', {
$cond: [ {$lt: ["$numberfield", 81]}, '61-80', {
$cond: [ {$lt: ["$numberfield", 101]}, '81-100', '100+' ]
}]}]}]}]
}
}},
{ $group: {
_id: "$bucket",
sum: { $sum: "$someotherfield" }
}}
)