需求说明
使用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} });
文章评论