[英]Converting DBObject to Java Object while retrieve values from MongoDB
[英]How to get a a property in a property from a dbobject in java, mongodb
所以我的mongo數據庫中有幾個dbobject。 這是其中一個對象的示例:
{ "_id" : { "$oid" : "525b048580c3fb0d62d2b6fc"} , "city" : "London" , "currentWeather" : [ { "cloudcover" : "25" , "humidity" : "82" , "observation_time" : "08:37 PM" , "precipMM" : "0.0" , "pressure" : "1008" , "temp_C" : "11" , "temp_F" : "52" , "visibility" : "10" , "weatherCode" : "113" , "weatherDesc" : [ { "value" : "Clear"}] , "weatherIconUrl" : [ { "value" : "http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0008_clear_sky_night.png"}] , "winddir16Point" : "W" , "winddirDegree" : "280" , "windspeedKmph" : "19" , "windspeedMiles" : "12"}]}
現在,我需要獲取數據庫中所有值低於給定“ temp_C”的數據庫對象,我使用了以下方法:
BasicDBObject query = new BasicDBObject("temp_C", new BasicDBObject(">", graden));
但是它失敗了,我認為這是因為該屬性是“ currentWeather”的子屬性,但是我不知道如何解決該問題。 我正在使用Java來做到這一點。
查看您的文檔結構,您正在嘗試訪問位於文檔數組中的子文檔,因此它比標准查詢要復雜一些:
{ "_id" : { "$oid" : "525b048580c3fb0d62d2b6fc"} , <-- Document
"city" : "London" ,
"currentWeather" : [ <-- Array
{ "cloudcover" : "25", <-- Sub document
...etc...
"pressure" : "1008" ,
"temp_C" : "11",
"temp_F" : "52",
...etc...
}
]
}
為了到達嵌套對象,您需要引用其在數組中的位置(在這種情況下,它是零,因為它是數組中的第一個元素),然后是子文檔中的字段名。 因此,您的查詢如下所示:
BasicDBObject query = new BasicDBObject("currentWeather.0.temp_C",
new BasicDBObject("$gt", 11));
請注意,原始查詢中存在兩個問題:
1)您需要引用currentWeather.0.temp_C
2)您的gt
運算符需要以美元符號開頭,而不是與號。
另外,你說你想查詢返回低於給定值較低的值,在這種情況下,你可能需要$ LT不是$ GT。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.