需求说明
使用MongoDB统计某个字段(Field)出现相同个数的情况,例如:统计某个泄露数据库前20的相同密码次数的情况。
实现
使用MondoDB的aggregate或者mapreduce来实现,举例:
db.some_collection.aggregate(
[
{ $group: { _id: "$password", count: { $sum: 1 } } },
{ $sort: { count: -1 } },
{ $limit: 20 }
]
)
或者:
db.runCommand({
'mapreduce': 'some_collection',
'map':function(){
return emit(this.password,1);
},
'reduce':function(key,values){
var x = 0;
values.forEach(function(value){
x+=value;
});
return x;
},
'out':{inline:1}
});
文章评论