2013-08-29 7 views
22

मैं मोंगोडब पर बिल्कुल नया हूं, और जब मैं आदेश दिया गया mongodb क्वेरी करने की कोशिश कर रहा हूं। लेकिन वसंत डेटा mongodb की तरह विधि को बहिष्कृत किया गया है। इसलिए मैंने org.springframework.data.domain.Sortस्प्रिंग मोंगोडीबी क्वेरी सॉर्टिंग

Query query = new Query(); 
query.with(new Sort(Sort.Direction.ASC,"pdate")); 
return mongoTemplate.find(query, Product.class); 

मैंने इस कोड ब्लॉक का उपयोग किया। लेकिन यह डेटा को सॉर्ट नहीं कर रहा है। तो क्या आप इस अभ्यास के लिए किसी भी उपयोगी विधि का उपयोग करना पसंद कर सकते हैं?

+0

आपका कोड सही लग रहा है, आप विस्तार से बता सकते हैं कि कैसे आप इस निष्कर्ष में आया था – gerrytan

+2

वे नहीं हैं "अपने डेटा छँटाई नहीं" पृष्ठ –

उत्तर

18

आप मामले की अनदेखी करने के इस तरह अपनी तरह परिभाषित कर सकते हैं:

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase() 
+0

पर आरोही तिथि आरोही, धन्यवाद, मेरा मतलब है कि मेरे जवाब में साल पहले, मैं आपका जवाब स्वीकार कर रहा हूं। –

+0

आप वास्तव में सॉर्ट कन्स्ट्रक्टर को अल्पविराम सीमांकित सूची (या पूर्व-निर्मित सूची) पास कर सकते हैं और एकाधिक ऑर्डरिंग मानदंडों को परिभाषित कर सकते हैं! – th3morg

+2

यह मुझ पर काम नहीं करता है, नवीनतम मोंगोडीबी के साथ, अजीब ... मुझे मोंगो और उस तरह के कोड के साथ अपवाद मिला है ... java.lang.IleglegalrrumentException: दिए गए क्रम में अनदेखा मामले के साथ उपयोगकर्ता नाम के लिए एक आदेश शामिल है! MongoDB वर्तमान में अनदेखा करने के मामले को सॉर्ट करने का समर्थन नहीं करता है! –

0

मेरा प्रश्न कोड सही था, अब मैं देखता हूं, क्षेत्र 'pdate' पर ऊंट की समस्या है।

3

आप अपने डेटा को सॉर्ट करने के लिए एकत्रीकरण का उपयोग कर सकते हैं। आपको समेकन क्वेरी के लिए मिलान और समूह मानदंडों का उपयोग करना होगा और अपने क्षेत्र को खोलना होगा।

AggregationOperation match = Aggregation.match(matching criteria); 
AggregationOperation group = Aggregation.group("fieldname"); 
AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC, "fieldname"); 
Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("fieldname"),match,group,sort); 
संबंधित मुद्दे