我们正在尝试从数据库(MongoDB)中检索条目并将它们放在数据库中。使用DBCursor时,我们使用cursor.hasNext()来获取下一个读数。
在MongoDB 2.0中对DBCursor进行了折旧,建议将FindIterable用于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;
答案 0 :(得分: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<>());