Mongodb資料庫刪除重複資料
阿新 • • 發佈:2018-12-09
具體程式碼如下:
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,防止後面的刪除操作將所有文件進行刪除。