Seperti pada MongoDB 2.4, Anda tidak dapat mengimplementasikan fungsi kustom apa pun di Kerangka Agregasi. Jika Anda ingin $group oleh satu atau beberapa bidang, Anda perlu menambahkannya melalui operator dan ekspresi agregasi atau melalui pembaruan eksplisit() jika Anda tidak ingin menghitung setiap waktu.
Menggunakan Kerangka Agregasi, Anda dapat menambahkan bucket yang dihitung bidang dalam $project langkah pipa dengan $cond operator
.
Berikut adalah contoh penghitungan rentang berdasarkan numberField yang kemudian dapat digunakan dalam $group pipa untuk 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" }
}}
)