@Grab(group='com.gmongo', module='gmongo', version='0.8') import com.mongodb.* import com.gmongo.* mongo = new GMongo("localhost", 27017) db = mongo.getDB("local") db["stores"].drop() // コレクションにオブジェクトを挿入する col = db["stores"] col.insert([country:"Japan", store:"store_A", sales:100]) col.insert([country:"Japan", store:"store_B", sales:120]) col.insert([country:"Japan", store:"store_C", sales:170]) col.insert([country:"United States", store:"store_D", sales:80]) col.insert([country:"United States", store:"store_E", sales:200]) col.insert([country:"United States", store:"store_F", sales:190]) col.insert([country:"United States", store:"store_G", sales:100]) // 国ごとの最小値・最大値を取得 for(obj in col.group(/* key */new BasicDBObject([country:true]), /* condition */new BasicDBObject(), /* initial */new BasicDBObject([smin:0, smax:0, firstobj:true]), /* reduce */""" function(obj,prev){ if( prev.firstobj == true ){ prev.smin = obj.sales; prev.smax = obj.sales; prev.firstobj = false; } if( prev.smin > obj.sales ){prev.smin = obj.sales;} if( prev.smax < obj.sales ){prev.smax = obj.sales;} } """ )){ println obj["country"] + " min:${obj.smin} max:${obj.smax}" }動作環境
Groovy 1.8.0, JDK6 Update22, gmongo 0.8, MongoDB 1.8.2
関連情報
gmongoのウェブサイト
https://github.com/poiati/gmongo
groovyとMongoDBのまとめ
グループ分けして集計する
0 件のコメント:
コメントを投稿