我经常会遇到想要减少 MapReduce 的情况。例如,如果我有两个对象,我想从一个对象获取版本,从另一个对象获取计数。
public class Visit {
public string Id { get; set; }
public string Version { get; set; }
}
public class Search {
public string Id { get; set; }
public string VisitId { get; set; }
}
public class MapReduceResult {
public string VisitId { get; set; }
public string Version { get; set; }
public int Count { get; set; }
}
减少时,我必须按 ID 和版本将访问和搜索分组在一起,以便能够获得每个版本的搜索次数。不幸的是,每次访问都会有一行,我们正在谈论数百万次。因此,将数据拉到客户端不是首选方式,而且 1024 对象限制也有点搞砸了。
如果我能以某种方式再次减少 MapReduce,这个问题就会得到解决。然后我第二次按版本分组,完全忽略 VisitId,并总结所有计数。有没有办法做到这一点?
甚至 Sum 都不能用于可查询,所以感觉就像我已经用完了服务器端选项。
你们有什么想法,我有任何意义吗?