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