mongo之map-reduce笔记

本文展示了一个使用Java进行MongoDB数据库操作的实例,通过MapReduce功能统计过去六个月内,涉及“诈骗数额特别巨大”案件的起刑点及案件数量。代码详细展示了如何连接MongoDB,执行MapReduce操作,并将结果输出到文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 package com.sy.demo;
 2 
 3 import com.mongodb.MongoClient;
 4 
 5 import com.mongodb.client.FindIterable;
 6 import com.mongodb.client.MapReduceIterable;
 7 import com.mongodb.client.MongoCollection;
 8 import com.mongodb.client.MongoCursor;
 9 import com.mongodb.client.MongoDatabase;
11 import org.bson.Document;
13 import java.io.File;
14 import java.io.FileOutputStream;
16 import java.text.SimpleDateFormat;
18 import java.util.Calendar;
19 import java.util.Date;
21 
22 public class MongoDBJDBC2 {
23     public static void main(String[] args) {
24         try {
25             MongoClient mongoClient = new MongoClient("localhost", 27017);
26             MongoDatabase db = mongoClient.getDatabase("data");
27             MongoCollection<Document> coll = db.getCollection("factPunishment");
28             Calendar cal = Calendar.getInstance();
29             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
30             cal.add(Calendar.MONTH, -6);
32             String compareDate = format.format(cal.getTime());
33             String currentDate = format.format(Calendar.getInstance().getTime());
34             String mapFunc = "function(){" + "if(this.factName=='诈骗数额特别巨大'){" +
35                 "if(this.createDate<='" + currentDate +
36                 "' && this.createDate>='" + compareDate + "'){" +
37                 "emit(this.factPunishment, 1);" + "}" + "};" + "}";
38             String reduceFunc = "function( key, values ){ return Array.sum(values); }";
39             MapReduceIterable<Document> result = coll.mapReduce(mapFunc,reduceFunc);
41             String str = "";
42 
43             for (Document d : result) {
44                 str += ("起刑点:" + d.get("_id") + ",案件量:" + d.get("value") + "\n");
46                 System.out.println("起刑点:" + d.get("_id") + ",案件量:" + d.get("value"));
48             }
49 
50             FileOutputStream out = new FileOutputStream(new File("D://test//factPunishment.txt"));
52             out.write(str.getBytes());
53             out.close();
54         } catch (Exception e) {
55             System.err.println(e.getClass().getName() + ": " + e.getMessage());
56         }
57     }
58 }

 

转载于:https://www.cnblogs.com/eyesmoon/p/9774131.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值