我正在做mongo中的map reduce:
List<Measurement> lista = new ArrayList<Measurement>();
String map = "function Map() {emit(this.emissionType,this.avgValue); }";
String reduce = "function Reduce (key, values) { var size = values.length; var result = (Array.sum(values))/size; return result; }";
Query query = new Query();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, -24);
Date date = cal.getTime();
query.addCriteria(Criteria.where("sensor.$id").is(sensorId).andOperator(Criteria.where("date").gt(date)));
MapReduceResults<Measurement> result = null;
try{
result = template.mapReduce(query,"measurements", map, reduce, Measurement.class);
}catch(Exception excep){
excep.printStackTrace();
}
Iterator itr = result.iterator();
while (itr.hasNext()) {
Object element = itr.next();
lista.add((Measurement) element);
}
我想要做的是按发射类型进行分组,并获得每个平均值。
使用reduce功能,我假装得到所有平均值的总平均值。
最后我想得到的所有结果必须是过去24小时。
问题来自于我执行它并且它不会返回任何内容