Java MongoDB getting value for sub document

Dhruv picture Dhruv · Aug 28, 2012 · Viewed 19k times · Source

I am trying to get the value of a key from a sub-document and I can't seem to figure out how to use the BasicDBObject.get() function since the key is embedded two levels deep. Here is the structure of the document

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

Basically a file has multiple reports and I need to retrieve the names of all reports in a given file. I am able to do BasicDBObject.get("name") and I can get the value "file_1", but how do I do something like this BasicDBObject.get("report.name")? I tried that but it did not work.

Answer

Parvin Gasimzade picture Parvin Gasimzade · Aug 29, 2012

You should first get the "report" object and then access its contents.You can see the sample code in the below.

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);
}