我需要在拥有大约20000个文档的mongo db中的集合中找到重复项。结果应该给我一个键(我在其上分组)以及它们重复的次数,只有当计数大于1.以下是不完整的,但是当我在mongo中运行时也会给出错误。 exe shell:
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 }
});
在属性列表(shell)之后SyntaxError:missing}:5
为什么会出现上述错误? 怎么才能得到数大于1的那些?
答案 0 :(得分: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的结果都非常简单。