问题描述
我通过mongodb的JDBC方式获取到一个数据集合,里边还包含另外一个集合,最内层集合中有一个Date类型的值,但是我需要获取一次,怎么在lambda循环中继续使用下一次循环呢?如果我在lambda中采用实体类DTO的话会导致类型转换异常。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
//数据库连接
MongoClient mongoClient = new MongoClient(new MongoClientURI(uri));
MongoCollection<Document> db = mongoClient.getDatabase(gameDTO.getMongodbDbName())
.getCollection("game_box_round");
ArrayList<GameBoxRoundDTO> gameBoxRoundDTOS = new ArrayList<>();
db.find(new Document("players.user_id", restSession.getUserId())
.append("end_time", new Document("$gt", date)))
.sort(new Document("end_time", -1))
.limit(20)
.forEach((Block<Document>) document -> {
ArrayList<GameRoundDTO> gameRoundDTOS = new ArrayList<>();
GameBoxRoundDTO gameBoxRoundDTO = new GameBoxRoundDTO()
.setId(document.getString("_id"))
.setBoxCode(document.getString("box_code"))
.setRoomId(document.getInteger("room_id"))
.setBeginTime(document.getDate("begin_time"))
.setEndTime(document.getDate("end_time"))
.setPlayers((List<PlayerDTO>) document.get("players"))
.setGameRounds((List<GameRoundDTO>) document.get("game_rounds"));
gameBoxRoundDTOS.add(gameBoxRoundDTO);
System.out.println(document.toJson());
});
你期待的结果是什么?实际看到的错误信息又是什么?
我想要获取字段为game_rounds集合下的某个值,在这里应该怎么写?也就是需要内嵌循环一次,应该怎么写呢?求大佬帮忙!!!
我在里边采用了普通的for循环导致了类型转换异常
//List<GameRoundDTO> game_rounds = (List<GameRoundDTO>) document.get("game_rounds");
ArrayList<GameRoundDTO> gameRoundDTOS = new ArrayList<>();
/*for (GameRoundDTO gameRound : game_rounds) {
GameRoundDTO gameRoundDTO = new GameRoundDTO()
.setGameSaveId(gameRound.getGameSaveId())
.setCurrentRound(gameRound.getCurrentRound())
.setEndTime(gameRound.getEndTime())
.setBeginTime(gameRound.getBeginTime());
gameRoundDTOS.add(gameRoundDTO);
}*/
这样写是错误的。。。。