मेरे पास छात्रों और उनके संपर्क विवरण का डेटाबेस है। मैं पोस्टकोड को खोजने की कोशिश कर रहा हूं जिसमें अधिकांश छात्र हैं। छात्रों के लिए दस्तावेजों कुछ इस तरह दिखाई ...mongodb एकत्रीकरण क्रम
{studentcode: 'smi0001', firstname: 'बॉब', उपनाम: 'स्मिथ', पोस्टकोड: 2001}
मैं सोचा मैं एकत्रीकरण ढांचे इस्तेमाल कर सकते हैं पता लगाने के लिए कुछ की तरह कार्य करके सबसे छात्रों के साथ पोस्टकोड ...
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}})
इस काम करता है के रूप में उम्मीद (_id
के रूप में डाक कोड और में छात्रों की संख्या देता है प्रत्येक पोस्टकोड 'छात्र' के रूप में, लेकिन यदि मैं पाइपलाइन पर $sort
जोड़ता हूं तो यह $group
ऑपरेशन के परिणामों के बजाय पूरे छात्र संग्रह द्वारा सॉर्ट करने का प्रयास करता है।
क्या मैं देखो की तरह कोशिश कर रहा हूँ ...
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}, $sort: {_id: -1}})
लेकिन यह पूरे संग्रह वापस आती है और $project
और $group
... मुझे याद आ रही कुछ की उपेक्षा? मैंने सोचा कि मैं सिर्फ छात्रों की अवरोही संख्या से क्रमबद्ध करने और पहले आइटम को वापस करने में सक्षम हूं। किसी भी मदद के लिए अग्रिम धन्यवाद।
सलाह के लिए धन्यवाद ढेर। मुझे विश्वास नहीं है कि यह सिर्फ एक गलत जगह वाली ब्रैकेट समस्या थी। ये 15 साल पहले एसक्यूएल सीखने के लिए उपयोग की जाने वाली समस्याओं की तरह हैं, मोंगोडब में जाने का मतलब बहुत पहले ज्ञान के पीछे छोड़ना है, लेकिन मुझे लगता है कि यह इसके लायक होगा। चीयर्स, –
यह आपके उपयोग के मामले के लिए काम करता है, लेकिन यह दृष्टिकोण हमेशा उन परिणामों की गारंटी नहीं देता है जिन्हें आप देखना चाहते हैं। उदाहरण के लिए परिणाम गलत होंगे जब आपको 'फ़ील्ड 1' द्वारा समूहबद्ध करने की आवश्यकता है, लेकिन इसे 'field2' द्वारा क्रमबद्ध रखें। – astronaut
मेरे पास POST1, POST2, POST3 पोस्टकोड था, प्रत्येक पोस्ट कोड में छात्रों की संख्या के विपरीत है। प्रत्येक POST के योग प्राप्त करने के लिए मेरी तरह की क्वेरी क्या होनी चाहिए। db.test.aggregate ( {$ समूह: {_id: {'पोस्टकोड': '$ पोस्टकोड'}, छात्र: {$ sum: 1}}}, यहां सॉर्ट क्वेरी क्या होनी चाहिए। ); –