最近自己写的爬虫后的数据存入mongodb存在一些重复数据,在用户查询时可能出现重复选项,这样用户体验不咋好。下面记录如何根据指定字段,对数据库现有数据进行排重。
db.juejin.aggregate([
{ $group: { _id : '$chapterName', count: { $sum : 1 } } },
{ $match: { count: { $gt : 1} } }
])
上面我们根据指定chapterName字段查询出,该字段下相同的数据个个数
db.juejin.aggregate([
{
$group: { _id: {chapterName: '$chapterName'},count: {$sum: 1},dups: {$addToSet: '$_id'}}
},
{
$match: {count: {$gt: 1}}
}
],{allowDiskUse: true}).forEach( //(使用forEach循环根据_id删除数据)
function(doc){
doc.dups.shift();
db.juejin.remove(
{
_id: {
$in: doc.dups
}
}
);
}
)
{allowDiskUse: true}通过使用磁盘进行缓存。
这样我们的重复数据就被删掉了。