我在從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