1. 程式人生 > >Mongodb資料庫刪除重複資料

Mongodb資料庫刪除重複資料

具體程式碼如下:

db.boss_python.aggregate([
    {
        $group: { _id: {job_id: '$job_id'},count: {$sum: 1},dups: {$addToSet: '$_id'}}
    },
    {
        $match: {count: {$gt: 1}}
    }  
]).forEach(function(doc){
    doc.dups.shift();
    db.boss_python.remove({_id:{$in:doc.dups}});
    })

在Rebomongo中操作可能會提示,forEach is not function,就可以進入到命令列中的資料庫操作。

首先,根據欄位進行分組(可以設定多個),會將欄位相同的放在同一個group中,然後使用count進行計數,由於group只會返回_id中統計的欄位,而後面再進行刪除的時候回使用到_id這個欄位,因此需要使用addToSet將_id加入dups變數中;$match中匹配的是數目大於1的文件集合;對於所有數目大於1的文件集,doc.dups.shift()表示剔除文件集中的第一個_id,防止後面的刪除操作將所有文件進行刪除。