2016-12-30 4 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; 

関連する問題