MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

स्प्रिंग रिपोजिटरी ऑटो विभिन्न वर्ग प्रकारों वाली संस्थाओं को कास्ट करता है

दोनों रिपॉजिटरी के लिए, आप @Query . का उपयोग कर सकते हैं एक MongoDB JSON क्वेरी स्ट्रिंग निर्दिष्ट करने के लिए एनोटेशन जिसका उपयोग विधि के नाम से प्राप्त क्वेरी के बजाय किया जाएगा (आपको पता होना चाहिए कि रिपॉजिटरी के विधि नामों को पार्स करने और MongoDB प्रश्नों के निर्माण के लिए एक सम्मेलन है)।

तो, @Query . का उपयोग करके , आप यह कर सकते हैं:

@Repository
public interface ManagerRepository extends MongoRepository<Employee, String>

  @Query(value="{ '_class' : 'com.igmtechnology.gravity.core.init.test.Manager' }")
  List<Person> findAllManagers();

}

परदे के पीछे, यह इस तरह की एक क्वेरी उत्पन्न करेगा:

db.person.findAll({'_class' ; 'com.igmtechnology.gravity.core.init.test.Manager'});

हालाँकि, इस कोड के साथ एक छोटी सी समस्या है। यदि आप Manager . का पूर्ण-योग्य वर्ग नाम बदलते हैं , तो क्वेरी RuntimeException . नहीं फेंकेगी , लेकिन कुछ भी नहीं लौटाएगा। इस मामले में आप @Query . के अंतर्गत वाइल्डकार्ड का उपयोग कर सकते हैं ।

@Query(value="{ '_class' : ?0 }")
List<Person> findAllManagers(String className);

फिर, जब आप विधि का आह्वान करते हैं, तो आप बस यह कर सकते हैं:

managerRepository.findAllManagers(Manager.class.getName());

प्रदान किया गया Manager.class.getName() ?0 . की जगह लेगा वाइल्डकार्ड और आपकी क्वेरी ठीक से बन जाएगी।

वही Employee . के लिए जाता है इस अंतर के साथ भंडार कि आपको Employee . का पूर्ण-योग्य वर्ग नाम प्रदान करना होगा @Query . में का value विशेषता।

अधिक जानकारी:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo और Node.js:UUID (GUID) का उपयोग करके _id द्वारा दस्तावेज़ ढूँढना

  2. आइटम को मूल्य mongodb द्वारा क्रमबद्ध करें

  3. MongoDB में Mongo Shell का उपयोग करके स्ट्रिंग को तिथि या ISODate में कनवर्ट करें

  4. MongoDB में पहलू का उपयोग करके प्रतिशत की गणना कैसे करें?

  5. फ्लास्क-मोंगोइंजिन में एकत्रीकरण