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}通過使用磁盤進行緩存。

這樣我們的重複數據就被刪掉了。

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