MongoTemplate使用Cursor處理大數量的資料
阿新 • • 發佈:2018-12-24
對於資料量巨大的情況下,使用mongoTemplate.find()方法返回一個列表,如果不分頁的話恐怕比較麻煩。mongoTemplate提供了另外一種方法,使用遊標逐個獲取資料,同時可以指定只獲取哪些域,而不是全部獲取回來。
例子如下:
DBObject query = new BasicDBObject(); //setup the query criteria 設定查詢條件 query.put("method", method); query.put("ctime", (new BasicDBObject("$gte", bTime)).append("$lt", eTime)); logger.debug("query: {}", query); DBObject fields = new BasicDBObject(); //only get the needed fields. 設定需要獲取哪些域 fields.put("_id", 0); fields.put("uId", 1); fields.put("ctime", 1); DBCursor dbCursor = mongoTemplate.getCollection("collectionName").find(query, fields); while (dbCursor.hasNext()){ DBObject object = dbCursor.next(); logger.debug("object: {}", object); //do something. }