Java MongoDB获取子文档的值

时间:2012-08-28 19:53:30

标签: java mongodb mongodb-java

我试图从子文档中获取键的值,我似乎无法弄清楚如何使用BasicDBObject.get()函数,因为键是嵌入两层深度的。这是文件的结构

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

基本上,文件有多个报告,我需要检索给定文件中所有报告的名称。我能够BasicDBObject.get("name")并且我可以获得值“file_1”,但我该如何做这样的事情BasicDBObject.get("report.name")?我试过了,但它不起作用。

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:3)

我找到了第二种方法,在另一篇文章中(没有保存链接,否则我会包含它)。

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

其中query =(BasicDBObject)cursor.next()

答案 2 :(得分:2)

您也可以使用查询,例如MongoTemplate等等......

Query query = new Query(Criteria.where("report.name").is("some value"));

答案 3 :(得分:1)

你可以试试这个,这对我有用

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