Java MongoDB获取子文档的值

Java MongoDB获取子文档的值,java,mongodb,mongodb-java,Java,Mongodb,Mongodb Java,我试图从子文档中获取一个键的值,但我似乎不知道如何使用BasicDBObject.get()函数,因为该键嵌入了两层。下面是文档的结构 File { name: file_1 report: { name: report_1, group: RnD } } 基本上,一个文件有多个报告,我需要检索给定文件中所有报告的名称。我可以执行BasicDBObject.get(“name”)并可以获取值“file_1”,但是如何执行类似BasicDBObjec

我试图从子文档中获取一个键的值,但我似乎不知道如何使用BasicDBObject.get()函数,因为该键嵌入了两层。下面是文档的结构

File { 
  name: file_1
    report: {
      name: report_1,
      group: RnD
    }
}
基本上,一个文件有多个报告,我需要检索给定文件中所有报告的名称。我可以执行
BasicDBObject.get(“name”)
并可以获取值“file_1”,但是如何执行类似
BasicDBObject.get(“report.name”)
?我试过了,但没有成功。

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

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

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


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

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


BasicDBObject query=newbasicdbobject(“report.name”、“some value”)

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

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

当你说它不起作用时,到底发生了什么?当它不起作用时,它什么也没有返回。我会试试这个。非常感谢。这和我写的一样。他们在单行中编写查询而不是两行。对于查询子文档中的字段,使用这个点符号对我来说非常有效。谢谢
Query query = new Query(Criteria.where("report.name").is("some value"));