2016-12-30 2 views
1

우리는 데이터베이스 (MongoDB)에서 항목을 검색하여 db에 배치하려고합니다. DBCursor를 사용할 때 cursor.hasNext()를 사용하여 다음 읽기를 얻습니다.MongoDB 3.0의 항목을 반복하는 방법은 무엇입니까?

DBCursor는 MongoDB 2.0에서 감가 상각되며 MongoDB 3.0 용 FindIterable을 사용하는 것이 좋습니다.

그러나 FindIterable을 사용할 때와 유사한 hasNext() 메소드는 없습니다.

아래 코드를 3.0 용으로 어떻게 변경합니까?

BasicDBObject query = new BasicDBObject("timeStamp", 
         new BasicDBObject("$gte",from).append("$lt",to)); 
    DBCursor cursor = (DBCursor) newColl.find(query); 
    //FindIterable cursor = newColl.find(query); 
    while (cursor.hasNext()) { 
      DBObject latestEntry = cursor.next(); 
      String json = latestEntry.toString(); 
      Reading reading = gson.fromJson(json, Reading.class); 
      readingList.add(reading); 

    } 
    return readingList; 

답변

2

다음과 같이 시도 할 수 있습니다.

List<Reading> readingList= newColl.find().map(item -> gson.fromJson(item.toJson(), Reading.class)).into(new ArrayList<>()); 
람다

사용 커서

MongoCursor<Document> cursor = newColl.find(query).iterator(); 
while (cursor.hasNext()) { 
     Document latestEntry = cursor.next(); 
     String json = latestEntry.toJson(); 
     Reading reading = gson.fromJson(json, Reading.class); 
     readingList.add(reading); 
} 
return readingList; 

사용

Document query = new Document("timeStamp", 
         new Document("$gte",from).append("$lt",to)); 
FindIterable<Document> find = newColl.find(query); 
for (Document latestEntry : find) { 
     String json = latestEntry.toJson(); 
     Reading reading = gson.fromJson(json, Reading.class); 
     readingList.add(reading); 
} 
return readingList; 

관련 문제