@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]) // MapReduceで国ごとの売上を取得 println col.mapReduce( /* map */ """function(){ emit(this.country, {min_sales:this.sales, max_sales:this.sales}); }""", /* reduce */ """function(key, values){ var firstobj = true; var minval = 0; var maxval = 0; for(var vi = 0;vi<values.length;vi++){ if( firstobj ){ minval = values[vi].min_sales; maxval = values[vi].max_sales; firstobj = false; } if( minval > values[vi].min_sales)minval = values[vi].min_sales; if( maxval < values[vi].max_sales)maxval = values[vi].max_sales; } return {min_sales:minval, max_sales:maxval}; }""", /* outputTarget */"mr_result", /* query */ new BasicDBObject() ) // 結果を表示 db.mr_result.find().each { println it }
動作環境
Groovy 1.8.2, JDK6 Update22, gmongo 0.8, MongoDB 2.0
関連情報
gmongoのウェブサイト
https://github.com/poiati/gmongo
groovyとMongoDBのまとめ
0 件のコメント:
コメントを投稿