我试图从子文档中获取键的值,我似乎无法弄清楚如何使用BasicDBObject.get()函数,因为键是嵌入两层深度的。这是文件的结构
File {
name: file_1
report: {
name: report_1,
group: RnD
}
}
基本上,文件有多个报告,我需要检索给定文件中所有报告的名称。我能够BasicDBObject.get("name")
并且我可以获得值“file_1”,但我该如何做这样的事情BasicDBObject.get("report.name")
?我试过了,但它不起作用。
答案 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");