1. 程式人生 > >MongoTemplate使用Cursor處理大數量的資料

MongoTemplate使用Cursor處理大數量的資料

對於資料量巨大的情況下,使用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.
		}