2016-03-04 3 views
1

У меня есть данные ниже, и я пытаюсь прочитать данные и выделить их в переменных, но не могу получить данные в info, все еще давая мне null или заготовки для email и phoneЗапрос на вложенные документы и переменные atrihute do (MongoDB Java Driver 3.2)

{ 
    "_id": ObjectId ("56c570d904df6c51b463da54"), 
    "Name": "John Smith" 
    "Age": 31, 
    "Info": { 
     "Email", "[email protected]" 
     "Phone", "+987654321" 
    } 
} 

ниже код Java

findAll.forEach (new Block <Document>() { 

       @Override 
       public void apply (Document document) { 
        String name = document.getString ("name")!= null? document.getString ("name"): ""; 
        int age = document.getInteger ("age")!= null? document.getInteger ("age"): 0; 
        String email = document.getString ("info.email")!= null? document.getString ("info.email") ""; 
        String phone = document.getString ("info.phone")! = null? document.getString ("info.phone") ""; 
        Costumer costumer = new Costumer (name, age, email, phone); 
        System.out.println (costumer); 
       } 
      }); 

ответ

2

Это выглядит близко! Есть несколько ошибок в коде:

  1. изменения Null к null
  2. Вы не можете поиска вложенных ключей например: document.getString("info.email") не будет работать. Вы должны назначить вспомогательный документ переменной, а затем попытаться извлечь данные из него.

Я не проверял, но я думаю, что-то, как это должно работать лучше:

findAll.forEach (new Block <Document>() { 
    @Override 
    public void apply (Document document) { 
     String name = document.getString ("name")! = null? document.getString("name") : ""; 
     int age = document.getInteger ("age", 0); 

     // Get the info subdocument 
     Document info = document.get("info", Document.class); 
     String email = ""; 
     String phone = ""; 
     if (info != null) { 
      email = info.getString ("email")! = null? info.getString("email") : ""; 
      phone = info.getString ("phone")! = null? info.getString("phone") : ""; 
     } 
     Costumer costumer = new Costumer (name, age, email, phone); 
     System.out.println(costumer); 
    } 
}); 

Надежда, что помогает.

+0

Это сработало, немного изменилось с вашего решения, спасибо 'email = info.getString (« email »)! = null? info.getString ("email"): ""; phone = info.getString («телефон»)! = null? info.getString ("phone"): ""; – alculete

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

  • Нет связанных вопросов^_^