簡體   English   中英

如何從Java,MongoDB中的dbobject獲取屬性中的aa屬性

[英]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("&gt", 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。

您不能在查詢中直接使用數組對象的值。 您可以使用Mongo的聚合框架。 Java Docs for Aggregate在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM