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

MongoDB के साथ जावा सिंटैक्स

जबकि आप निश्चित रूप से आपके द्वारा सुझाए गए फॉर्म का उपयोग कर सकते हैं:

for (Document document : col.find()) {
    // do something
}

यह एक समस्या का परिचय देता है जब लूप के लिए शरीर एक अपवाद फेंकता है:यदि ऐसा होता है तो कर्सर बंद नहीं होगा। इससे बचाव के लिए उचित मुहावरा स्पष्ट रूप से MongoCursor (जो Closeable लागू करता है) का उपयोग करना है:

try (MongoCursor<Document> cursor = col.find().iterator()) {
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
}

इस तरह से कर्सर को मैन्युअल रूप से बंद करने के बारे में चिंता करने के लिए एप्लिकेशन कोड की आवश्यकता से बचने के लिए forEach विधि सिंटैक्टिक चीनी का एक छोटा सा हिस्सा है।

यदि आप प्रत्येक पुनरावृत्ति के लिए एक नया ब्लॉक नहीं बनाना चाहते हैं, तो आप अपने कोड को अनाम आंतरिक वर्ग निर्माण से बाहर निकाल सकते हैं, जैसे:

Block<Document> block = new Block<Document>() {
    @Override
    public void apply(final Document document) {
        System.out.println(document);
    }
};
col.find().forEach(block);

बेशक यह और भी अधिक जटिल है, इसलिए यदि आप जावा 8 का उपयोग करने में सक्षम हैं, तो आप पूरी चीज़ को लैम्ब्डा से बदल सकते हैं:

col.find().forEach((Block<Document>) document -> {
    System.out.println(document);
});

या इस मामले में बस:

col.find().forEach((Block<Document>) System.out::println);

लैम्ब्डा मेटाफैक्ट्री यह सुनिश्चित करेगी कि कोई अनावश्यक वस्तु न बनाई जाए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $ltrim

  2. नए मोंगोडब पीईसीएल एक्सटेंशन में छँटाई कैसे काम करती है?

  3. जावा 8 लोकलडेट मैपिंग अपवाद के साथ स्प्रिंग डेटा मोंगोडीबी

  4. डेटा खोए बिना मैं एक मोंगोडब कैप्ड संग्रह का आकार कैसे बदल सकता हूं?

  5. Amazon EC2 पर उच्च प्रदर्शन MongoDB क्लस्टर