/******************************************************************************* * Copyright (c) 2013 hangum. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * hangum - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.mongodb.core.test; import java.util.Map; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MapReduceCommand; import com.mongodb.MapReduceOutput; import com.mongodb.Mongo; /** * MongoDB MapReduce example * * // map function() { emit(this.name, {count: 1, sum: this.number}); }; // reduce function(key,values) { var n = { count: 0, sum: 0}; for ( var i = 0; i < values.length; i ++ ) { n.sum += values[i].sum; n.count += values[i].count; }; return n; }; * * * @author hangum * */ public class MongoTestMapReduce { static String map = "function(){emit(this.name, {count: 1, sum: this.number});};"; static String reduce = "function( key , values ){" + "var n = { count: 0, sum: 0}; " + "for ( var i = 0; i < values.length; i ++ ) {" + "n.sum += values[i].sum;" + "n.count += values[i].count;" + "};" + "return n;" + "};"; /** * @param args */ public static void main(String[] args) throws Exception { ConAndAuthentication testMongoCls = new ConAndAuthentication(); Mongo mongo = testMongoCls.connection(ConAndAuthentication.serverurl, ConAndAuthentication.port); DB db = mongo.getDB("test"); DBCollection coll = db.getCollection("person"); MapReduceOutput out = coll.mapReduce(map, reduce, null, MapReduceCommand.OutputType.INLINE, null); for ( DBObject obj : out.results() ) { System.out.println("======================================================"); System.out.println("\t[_id]\t" + obj.get("_id")); Map objResult = (Map)obj.get("value"); System.out.println("\t[count]\t" + objResult.get("count")); System.out.println("\t[sum]\t" + objResult.get("sum")); System.out.println( obj ); } // out.getRaw(); // out.getRaw(); mongo.close(); try { Thread.sleep(1); } catch (Exception e) { } } }