mongoDB 3.2 . में आप निम्न फ़ॉर्म की समग्र क्वेरी का उपयोग करके इसे निष्पादित कर सकते हैं:
db.collection.aggregate(
{$sort: {created: -1}},
{$group: {_id:'$city', title:{$push: '$title'}},
{$project: {_id:0, city: '$_id', mostRecentTitle: {$slice: ['$title', 0, 2]}}}
)
मोंगोडीबी 3.0 का उपयोग करके इसे हासिल करना बहुत मुश्किल है। 3.0 में इसे हासिल करने के लिए एक बहुत ही गंदी चाल है। इसमें कुछ चरण और अन्य संग्रह शामिल हैं।
पहले एक समग्र करें और परिणाम को 'aggr_out' नामक अस्थायी संग्रह में आउटपुट करें
प्रश्न:
db.collection.aggregate([
{$sort: {created: -1}},
{$group: {_id:'$city', title:{$push: '$title'}},
{$project: {city: '$_id', mostRecentTitle: '$title'}},
{$out: 'aggr_out'}]
)
उपरोक्त क्वेरी का उपयोग करते हुए, अधिकांश रीसेंटटाइटल में इंडेक्स 0, 1, 2, ... से ऑर्डर किए गए सभी हालिया शीर्षक होंगे ... यदि आप इसका उपयोग करके इस परिणाम से खुश हैं क्योंकि आपके पास पहले से ही अधिकांश रीसेंटटाइटल के इंडेक्स 0,1 और 2 में परिणाम है। अन्य शीर्षकों को आवेदन पक्ष में सरलता से अनदेखा किया जा सकता है।
फिर भी यदि आप खुश नहीं हैं, तो आउटपुट संग्रह 'aggr_out' पर एक अपडेट करें, और इस संग्रह से डेटा पढ़ें। प्रश्न है,
db.aggr_out.update(
{},
{$push: {
mostRecentTitle: {$each:[], $slice:3}
}
}
)
उपरोक्त ऑपरेशन सबसे हालिया शीर्षक सरणी को टुकड़ा करेगा ताकि उसके पास हाल के तीन शीर्षक हों। अपना वांछित परिणाम प्राप्त करने के लिए इस संग्रह को पढ़ें।