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

mongodb刪除重複資料

注:mongodb當前版本是3.4.3

插入六條資料:

查詢存在重複的資料:

查詢並迴圈刪除重複資料:

刪除語句解析:
db.userInfo.aggregate([
{
$group: { _id: {userName: '$userName',age: '$age'},count: {$sum: 1},dups: {$addToSet: '$_id'}}
},
{
$match: {count: {$gt: 1}}
}
]).forEach(function(doc){
doc.dups.shift();
db.userInfo.remove({_id: {$in: doc.dups}});

})
1.根據userName和age分組並統計數量,$group只會返回參與分組的欄位,使用$addToSet在返回結果陣列中增加_id欄位
2.使用$match匹配數量大於1的資料
3.doc.dups.shift();表示從陣列第一個值開始刪除;作用是踢除重複資料其中一個_id,讓後面的刪除語句不會刪除所有資料
4.使用forEach迴圈根據_id刪除資料

$addToSet 操作符只有在值沒有存在於陣列中時才會向陣列中新增一個值。如果值已經存在於陣列中,$addToSet返回,不會修改陣列。

注意:forEach和$addToSet的駝峰寫法不能全部寫成小寫,因為mongodb嚴格區分大小寫、mongodb嚴格區分大小寫、mongodb嚴格區分大小寫,重要的事情說三遍!

轉自: