Mongodb3.0 java MapReduce实例

16 篇文章 0 订阅
7 篇文章 0 订阅
String mapFunction2 = "function() {  "+
                      " var key = this.userid;  "+
                      " var value = {  "+
                                   "  userid: this.userid, "+
                                   " total_time: this.length, "+
                                   " count: 1, "+
                                   " avg_time: 0 "+
                                   " }; "+


                      " emit( key, value );  "+
                 " };";

String reduceFunction2 ="function(key, values) { "+


                       " var reducedObject = {  "+
                                            "  userid: key, "+
                                             " total_time: 0, "+
                                            "  count:0, "+
                                            "  avg_time:0 "+
                                            " }; "+


                       " values.forEach( function(value) { "+
                                            "  reducedObject.total_time += value.total_time; "+
                                            "  reducedObject.count += value.count;  "+
                                        " } "+ 
                                     " ); "+
                        " return reducedObject;  "+
                    " };";

String finalizeFunction = "function (key, reducedValue) {  "+


           " if (reducedValue.count > 0) "+
              "  reducedValue.avg_time = reducedValue.total_time / reducedValue.count; "+


           "  return reducedValue; "+
         "}";
MongoCursor<Document> cursor4 =database.getCollection("sessions").find().iterator();
try {
while (cursor4.hasNext()) {
System.out.println("map1-2==="+cursor4.next().toJson());


}
} finally {
cursor4.close();
}

MongoCursor<Document> cursor5 = database.getCollection("sessions").mapReduce(mapFunction2, reduceFunction2).iterator();
try {
while (cursor5.hasNext()) {
System.out.println("map1-1==="+cursor5.next().toJson());


}
} finally {
cursor5.close();
}

Document command = new Document();
command.append("mapReduce", "sessions").append("map", mapFunction2).append("reduce", reduceFunction2).append("finalize", finalizeFunction).append("out", "myMapReduce2");
Document result2 = database.runCommand(command);
System.out.println("myMapReduce2===result "+result2.toJson());
System.out.println("myMapReduce2==== "+database.getCollection("myMapReduce2").count());
System.out.println("session_stat==== "+database.getCollection("session_stat").count());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值