【问题标题】:finding duplicates using map reduce from mongodb使用来自 mongodb 的 map reduce 查找重复项
【发布时间】:2011-08-21 12:08:48
【问题描述】:

我需要在 mongo db 的集合中找到重复项,该集合包含大约 20000 个文档。结果应该给我密钥(我正在分组)以及它们仅在计数大于 1 时重复的次数。以下内容不完整,但是当我在 mongo 中运行时也会出错。 exe外壳:

db.runCommand({ mapreduce: users, 
 map : function Map() {
                emit(this.emailId, 1); 
}
reduce : function Reduce(key, vals) {
                return Array.sum(vals);

}
finalize : function Finalize(key, reduced) {
                return reduced
}
out : { inline : 1 }
});

SyntaxError: missing } after property list (shell):5

为什么会出现上述错误? 怎么只能得到count大于1的呢?

【问题讨论】:

标签: mongodb


【解决方案1】:

我不确定这是否是您输入的代码的精确副本,但看起来您在传递给runCommand 的对象中的字段之间缺少逗号。试试:

db.runCommand({ mapreduce: users, 
    map : function Map() {
        emit(this.emailId, 1); 
    },
    reduce : function Reduce(key, vals) {
        return Array.sum(vals);
    },
    finalize : function Finalize(key, reduced) {
        return reduced
    },
    out : { inline : 1 }
});

还请注意,即使使用finalize,您也不能在使用 Map-Reduce 的单次传递中实际从输出文档(或集合)中删除条目。但是,无论您使用的是 out: {inline: 1} 还是 out: "some_collection",过滤掉计数为 1 的结果都非常简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多