2012-08-28 15 views
5

के लिए मूल्य प्राप्त कर रहा है मैं एक उप-दस्तावेज़ से एक कुंजी का मूल्य प्राप्त करने का प्रयास कर रहा हूं और मुझे लगता है कि मूल DBObject.get() फ़ंक्शन का उपयोग कैसे करें, क्योंकि कुंजी दो एम्बेडेड है स्तर गहरे। यहाँ दस्तावेज़जावा मोंगोडीबी उप दस्तावेज़

File { 
    name: file_1 
    report: { 
     name: report_1, 
     group: RnD 
    } 
} 

की संरचना है मूल रूप से एक फाइल कई रिपोर्टों है और मैं किसी दिए गए फ़ाइल में सभी रिपोर्टों के नाम को पुनः प्राप्त करने की जरूरत है। मैं BasicDBObject.get("name") करने में सक्षम हूं और मुझे "file_1" मान मिल सकता है, लेकिन मैं इस BasicDBObject.get("report.name") की तरह कुछ कैसे करूं? मैंने कोशिश की लेकिन यह काम नहीं किया।

+0

जब आप कहते हैं कि यह वास्तव में क्या काम नहीं करता है? – Mark

+0

जब यह काम नहीं करता, तो यह कुछ भी नहीं लौटा। – Dhruv

उत्तर

10

आपको पहले "रिपोर्ट" ऑब्जेक्ट प्राप्त करना चाहिए और फिर इसकी सामग्री तक पहुंचना चाहिए। आप नीचे दिए गए नमूना कोड देख सकते हैं।

DBCursor cur = coll.find(); 

for (DBObject doc : cur) { 
    String fileName = (String) doc.get("name"); 
    System.out.println(fileName); 

    DBObject report = (BasicDBObject) doc.get("report"); 
    String reportName = (String) report.get("name"); 
    System.out.println(reportName); 
} 
+0

इसे आज़माएं। बहुत बहुत धन्यवाद। – Dhruv

+0

जोंगो एपीआई का उपयोग करके यह कैसे किया जा सकता है? –

3

मुझे इसे एक और पोस्ट पर करने का दूसरा तरीका मिला (लिंक को सहेज नहीं था अन्यथा मैं इसे शामिल करता था)।

(BasicDBObject)(query.get("report")).getString("name") 

जहां क्वेरी = (BasicDBObject) cursor.next()

+1

यह वही है जैसा मैंने लिखा था। दो पंक्तियों के बजाय उन्होंने एकल पंक्ति में क्वेरी लिखी। –

1

आप इस कोशिश कर सकते हैं, यह मेरे लिए काम किया

BasicDBObject query = new BasicDBObject("report.name", "some value");

+0

उप-दस्तावेज़ों में फ़ील्ड पूछताछ के लिए, इस डॉट नोटेशन का उपयोग करके मेरे लिए पूरी तरह से काम किया। धन्यवाद। – splungebob

1

तुम भी प्रश्नों का उपयोग कर सकते हैं मामले में, MongoTemplate और इतने पर ...

Query query = new Query(Criteria.where("report.name").is("some value")); 
संबंधित मुद्दे