2016-01-13 5 views
0

Я использую драйвер JAVA и выполняю поиск документа. Возвращенные документы имеют тип Document.Получение значения из внутреннего массива из документа MongoDB Java

Из кода я вижу строковый тип ('name'), который выходит правильно. Я также могу видеть массив часов как строку.

Что я ищу, чтобы сделать, это получить конкретный элемент из массива, который должен выбрать часы [1] [2], который будет значением 8.

Im пытается сделать эту операцию прямо на Документе типа без преобразования в 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 im, не видя тип DBList только BasicDBList. Я что-то упускаю ? – DevilCode

+0

Вы правы! Я исправил это! –

+0

Ваш пример дает мне отличное исключение. Однако a (java.util.ArrayList) document.get ("hours"); работает. – DevilCode

Смежные вопросы