Mongodb 指定字段去重操作

   最近自己写的爬虫后的数据存入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}通过使用磁盘进行缓存。

这样我们的重复数据就被删掉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章