我在从MongoDB中的查询文档中检索值时遇到问题。MongoDB从BasicDBObject中提取值(Java)
例如,文档结构是这样的:
{
"_id": {
"$oid": "50f93b74f9eccc540b302462"
},
"response": {
"result": {
"code": "1000",
"msg": "Command completed successfully"
},
"resData": {
"domain:infData": {
"domain:name": "ritesh.com",
"domain:crDate": "2007-06-15T12:02:36.0000Z",
"domain:exDate": "2013-06-15T12:02:36.0000Z"
}
}
}
}
和查询代码:
DBCollection collection = db.getCollection("domains");
BasicDBObject p = new BasicDBObject("response.resData.domain:infData.domain:name", "ritesh.com");
DBCursor c = collection.find(p);
while(c.hasNext()) {
DBObject obj = c.next();
Object value = obj.get("response.resData.domain:infData.domain:name");
}
它查询罚款,并获取文档,但我似乎无法弄清楚如何从DBObject(或BasicDBObject自c.next()返回类型BasicDBObject)提取“response.resData.domain:infData.domain:name”或其他类似嵌套值的值。
我可以在一个时间一个获取对象,如:
((DBObject)obj.get("response")).get("resData")....
,但似乎非常繁琐。
我想,既然你可以把()嵌套字段值在BasicDBObject,如:
basicDBObject.put("response.resData.domain:infData.domain:name", "ritesh.com");
,我可以同样使用get()从使用同一种关键的BasicDBObject结果寄存。就像我试图在代码中做以上:
Object value = obj.get("response.resData.domain:infData.domain:name");
但是,返回一个空值。
这可能是直截了当的,但我似乎无法弄清楚。在网上检查过的地方,这些例子只是从结果中获取没有嵌套的值。像
doc.get("name");
,而不是像这样:
doc.get("name.lastname.clanname");
任何帮助,将不胜感激。谢谢!
你可以使用'fieldName.split(“\\。”)'不依赖于StringUtils – Esteve