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

MongoDB जावा नेस्टेड दस्तावेज़ कुंजी नाम में डॉट्स का उपयोग करके सुलभ नहीं हैं

जब find . में उपयोग किया जाता है तो डॉट-नोटेशन ठीक काम करता है विधि का क्वेरी फ़िल्टर। उदाहरण के लिए,

Document document = collection.find(Filters.eq("one.two", "three")).first();
System.out.println(document);    // prints the returned document

या इसके mongo शेल समकक्ष:

db.collection.find( { "one.two": "three" } )


दस्तावेज़ क्लास का get() विधि एक Object लेती है (एक स्ट्रिंग कुंजी) एक पैरामीटर के रूप में और एक Object देता है ।

कोड पर विचार करें:

Document doc = coll.find(eq("data-id", "1234")).first();
System.out.println(doc);

आउटपुट Document{{_id=1.0, data-id=1234, one=Document{{two=three}}}} दिखाता है कि तीन हैं कुंजियाँ:_id , data-id और one . ध्यान दें कि नहीं है कुंजी का नाम one.two . है . कुंजी two उप-डीक्यूमेंट में है कुंजी के साथ दस्तावेज़ का one

तो, आपके कोड से:

document.get("one.two");    // This is null ((Document)
document.get("one")).get("two"); // Not null

पहला स्टेटमेंट null लौटाता है , और अगला वाला three returns लौटाता है (स्ट्रिंग मान)। दोनों सही हैं परिणाम और वह Document . का व्यवहार है क्लास एपीआई।

आपको विधि का उपयोग करना चाहिए getEmbedded एम्बेडेड फ़ील्ड तक पहुँचने के लिए one.two . तो, document.get("one.two") . को बदलें के साथ

document.getEmbedded(Arrays.asList("one", "two"), String.class)

परिणाम "तीन" है, जैसा कि अपेक्षित था।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या प्रतिकृति सेट दिल की धड़कन आवृत्ति या टाइमआउट अवधि कॉन्फ़िगर करने योग्य है?

  2. mongodb-native findAndModify में फ़ील्ड नाम के रूप में एक चर का उपयोग कैसे करें?

  3. जाँच करें कि क्या अद्यतन/सम्मिलित करने में कोई त्रुटि है | मोंगोडीबी जावा ड्राइवर

  4. MongoDB:किसी फ़ील्ड के लिए क्वेरी

  5. मोंगोडीबी टर्मिनल पर मोंगोड कमांड चलाते समय निरस्त हो रहा है