MongoDB數據重復解決方案


當我們在測試階段時難免會出現一些程序寫錯,導致數據重復,本人因為這個問題,倒騰了幾天,剛開始的思路是寫腳本,因為自己語言學的太菜,導致連一個定義的公式都沒想出來,后來是利用MongoDB里面的聚合解決的。

  下面我以一個小實例來講把:

 

不難看出,姓名有出現重復的現象,少的情況我們可以逐個刪除,當數據量達到幾百萬,幾千萬的時候估計大家有些發愁了,應該會有些朋友會想到寫腳本去篩選然后刪除這些重復的數據把,其實可以利用MongoDB中的聚合去刪除重復的數據

 第一個括號是:相同數據的字段

第二個括號是:操作相對應的文檔

然后我依次向大家解釋是什么意思:

aggregate:(聚合管道)

1.group只會返回參與分組的字段

2.根據name分組統計數量

3.$match匹配數量大於1的數據

4.doc.dups.shift();表示從數組第一個值開始刪除;作用是踢除重復數據其中一個_id,讓后面的刪除語句不會刪除所有數據
5.使用forEach循環根據_id刪除數據
 
$addToSet 操作符只有在值沒有存在於數組中時才會向數組中添加一個值。如果值已經存在於數組中,$addToSet返回,不會修改數組。

 

 

 

數據重復name字段已經刪除。

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM