2016-12-30 35 views
1

我們試圖從數據庫(MongoDB)中檢索條目並將它們放入數據庫中。當使用DBCursor時,我們使用cursor.hasNext()來獲取下一個閱讀。如何遍歷MongoDB 3.0中的條目?

DBCursor在MongoDB 2.0中折舊,建議使用FindIterable for MongoDB 3.0。

但是,當我們使用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

你可以嘗試下面的東西。

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; 

使用遊標

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; 

使用lambda

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