MongoDB 2.4 की तरह, आप एग्रीगेशन फ्रेमवर्क में किसी भी कस्टम फ़ंक्शन को लागू नहीं कर सकते। अगर आप $group
. करना चाहते हैं यदि आप हर बार गणना नहीं करना चाहते हैं, तो आपको एक या अधिक फ़ील्ड के द्वारा या तो एकत्रीकरण ऑपरेटरों और अभिव्यक्तियों के माध्यम से या एक स्पष्ट अद्यतन () के माध्यम से जोड़ना होगा।
एग्रीगेशन फ्रेमवर्क का उपयोग करके आप एक परिकलित bucket
जोड़ सकते हैं $project
. में फ़ील्ड $cond
के साथ पाइपलाइन चरण ऑपरेटर
।
यहां numberField
. के आधार पर श्रेणियों की गणना करने का एक उदाहरण दिया गया है जिसे तब $group
. में इस्तेमाल किया जा सकता है योग/औसत/आदि के लिए पाइपलाइन:
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" }
}}
)