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

MongoDB में जोड़ने से पहले स्प्रिंग डेटा में सम्मिलित अनुरोधों को कैसे संसाधित करें?

ऐसा लगता है कि आप यहां स्प्रिंग डेटा आरईएसटी का उपयोग करने के बजाय एक कस्टम नियंत्रक लिखना बेहतर समझते हैं क्योंकि आपको मूल रूप से दो संसाधनों की आवश्यकता होती है:एक लिंक जोड़ने के लिए या किसी मौजूदा को वापस करने के लिए और दूसरा हैश के माध्यम से मूल यूआरआई पुनर्प्राप्त करने के लिए।

पहली विधि में आप केवल एक रिपॉजिटरी विधि को कॉल करेंगे findByLongURL(…) और प्राप्त URL . का उपयोग करें उदाहरण के लिए यदि आपके पास कोई परिणाम है या वास्तव में हैश बनाने के लिए दूसरा कदम उठाते हैं और URL को सहेजते हैं उदाहरण विचार भंडार। दूसरा संसाधन मूल रूप से आपको पहले से मौजूद विधि कहेगा।

यह सीधा और पचाने में आसान है।

यदि आपको पूर्व विधि के कार्यान्वयन की आवश्यकता है, तो एक परमाणु ऑपरेशन होना चाहिए, रिपॉजिटरी क्वेरी विधि को मैन्युअल रूप से लागू करने की आवश्यकता होती है (उस पर सामान्य निर्देशों के लिए संबंधित अनुभाग को संदर्भ दस्तावेज़ीकरण ):

class UrlRepositoryImpl implements UrlRepositoryCustom {

  private final MongoOperations operations;

  public UrlRepositoryImpl(MongoOperations operations) {
    this.operations = operations;
  }

  @Override
  public URL findOrInsert(String source) {

    // What to find?
    Query query = Query.query(Criteria.where("longURL").is(source);

    // What to write if nothing can be found
    Update update = new Update()
      .setOnInsert("longURL", source)
      .setOnInsert("hash", calculatedHash);

    FindAndModifyOptions options = new FindAndModifyOptions.options()
      .returnNew(true) // returns the document insert (if so)
      .upsert(true); // insert document if it doesn't exist

    return operations.findAndModify(query, update, options, URL.class);
  }
}

जैसा कि आप देख सकते हैं कि इसमें कुछ निचले स्तर के विवरणों से निपटना शामिल है (हालाँकि स्थैतिक आयात का उपयोग करके वर्बोसिटी को कम किया जा सकता है) लेकिन मूल रूप से आपको एक परमाणु संचालन देता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $avg एकत्रीकरण पाइपलाइन ऑपरेटर

  2. PHP में कई क्षेत्रों पर लोचदार खोज और खोज

  3. मोंगो डीबी (mongodb.service) विफल, स्थिति 14

  4. MongoDB - GridFS का उपयोग करके अधिकतम फ़ाइल आकार

  5. मोंगोडीबी $strLenBytes