2016-01-13 150 views
0

我正在使用JAVA驅動程序並正在執行文檔查找。 返回的文檔屬於Document類型。從文檔MongoDB中獲取內部數組的值Java

從代碼我可以看到正確出來的字符串類型('名稱')。 我還可以將小時數組看作字符串。

我尋找做的就是從數組,它是挑出小時[1] [2]這將是值的特定元件8

進出口試圖直做在文獻這個操作鍵入而不轉換爲JSONObject。

這可能嗎?

{
「名稱」: 「TEMP1」, 「小時」:[ [ 0, 1, 2, 3, 4,], [ 6, 7, 8, 9, 10,],[12 , 13, 14, 15, 16,]
{

FindIterable<Document> iterable = collection.find(and(eq("day", day),eq("month", month),eq("year", year),eq("name", java.util.regex.Pattern.compile("Temp"))));   
iterable.forEach(new Block<Document>() { 
    @Override 
     public void apply(final Document document) { 
      //System.out.println(document.toJson()); 
      System.out.println("Name: "+document.getString("name"));      
      System.out.println("Hours[]: "+document.get("hours")); 
     } 
    } 

回答

0

你必須將其轉換爲DBLIST對象,如:

(BasicDBList) document.get("hours"); 

然後,您可以遍歷列表只是作爲正常名單!

+1

嗨在驅動程序3.0.2即時通訊沒有看到一個類型DBList只有BasicDBList。我錯過了什麼嗎? – DevilCode

+0

你是對的!我糾正了它! –

+0

你的例子給了我一個強制性例外。然而,一個(java.util.ArrayList)document.get(「小時」);確實有效。 – DevilCode