6

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

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

基本上一个文件有多个报告,我需要检索给定文件中所有报告的名称。我能够做到BasicDBObject.get("name")并且可以获得值“file_1”,但是我该怎么做BasicDBObject.get("report.name")呢?我试过了,但没有用。

4

4 回答 4

11

您应该首先获取“报告”对象,然后访问其内容。您可以在下面看到示例代码。

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);
}
于 2012-08-29T06:37:39.303 回答
2

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

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

where query = (BasicDBObject) cursor.next()

于 2012-08-29T19:30:00.257 回答
2

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

Query query = new Query(Criteria.where("report.name").is("some value"));
于 2015-05-16T07:47:30.093 回答
1

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

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

于 2013-02-13T21:30:40.260 回答