मैं मोंगोडीबी के साथ स्प्रिंग डेटा के लिए नया हूं और अपने मोंगो रिपोजिटरी एक्सटेंशन इंटरफ़ेस के अंदर स्वचालित रूप से जेनरेट की गई क्वेरी विधि चाहता हूं जिसके लिए फ़िल्टरिंग, सॉर्टिंग और सीमित होना आवश्यक है।स्प्रिंग रिपोजिटरी इंटरफ़ेस में सॉर्ट() और सीमा() के साथ क्वेरी
क्वेरी इस तरह दिखता है:
public interface JobRepository extends MongoRepository<Job, String> {
@Query("{ state: 'ACTIVE', userId: ?0 }")
List<Job> findActiveByUserId(String userId);
// The next line is the problem, it wont work since
// it's not in the format @Query expects
@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
Job findOneActiveOldest();
...
}
मुझे पता है कि एक आदेश छँटाई प्राप्त करने के लिए एक प्रश्न पद्धति के लिए एक क्रमबद्ध तर्क जोड़ सकते हैं लेकिन:
// 'created' is the field I need to sort against
find({state:'ACTIVE'}).sort({created:-1}).limit(1)
भंडार इंटरफ़ेस इस तरह दिखता है समस्या केवल एक ही वस्तु को सीमित कर रही है। क्या कस्टम JobRepositoryImpl लिखने के बिना ऐसा करना संभव है?
धन्यवाद
संपादित करें:
का उदाहरण है कि मैं क्या देख रहा हूँ:
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
या
@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
लेकिन यह स्पष्ट रूप से काम नहीं करता है :(
धन्यवाद ओलिवर, यह मैं वास्तव में क्या ढूंढ रहा था। – m1h4
मैं इतनी व्यस्त और सरल क्वेरी-जैसे समाधान की तलाश में व्यस्त था कि मैंने पेजेबल क्लास की जांच करने के लिए परेशान नहीं किया और महसूस किया कि यह सॉर्ट सॉर्ट-ऑफ के साथ संयोजन में .sort() और .limit() की कार्यक्षमताओं को लपेटता है एक मोंगो क्वेरी। – m1h4
कोई समस्या नहीं, खुशी है कि यह आपके लिए काम करता है! :) –