【发布时间】:2014-11-26 16:18:28
【问题描述】:
我正在尝试在用于生产的 Mongo 2.4 版数据库中查找重复项,因此无法更新。由于 2.4 中不存在聚合,我无法使用聚合管道 来查找重复项,因此我正在尝试使用 MapReduce 找到解决方案。
我已经通过 MongoVUE 的 Map Reduce 接口尝试了以下一组 map、reduce 和 finalize 函数,它们在 3,000,000 条记录集合上运行不到一秒后没有返回任何内容,这些记录集合在指定的字段上肯定有重复项。显然出了点问题,但 MongoVUE 没有显示任何错误消息或有用的指示。
function Map() {
emit(
{name: this.name, LocationId: this.LocationId,
version: this.version},
{count:1, ScrapeDate: this.ScrapeDate}
);
}
function Reduce(key, values) {
var reduced = {count:0, ScrapeDate:''2000-01-01''};
values.forEach(function(val) {
reduced.count += val.count;
if (reduced.ScrapeDate.localeCompare(val.ScrapeDate) < 0)
reduced.ScrapeDate=val.ScrapeDate;
});
return reduced;
return values[0];
}
function Finalize(key, reduced) {
if (reduced.count > 1)
return reduced;
}
我只需要找到共享相同name、LocationId 和version 的多条记录的任何实例,并理想地显示此类记录的最新ScrapeDate。
【问题讨论】:
标签: javascript mongodb mapreduce duplicates