如何遍历MongoDB 3.0中的条目?

时间:2016-12-30 08:48:13

标签: mongodb

我们正在尝试从数据库(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;

1 个答案:

答案 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<>());