2016-01-13 28 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