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" }
}}
)