裡邊的内容在某些情況下不可行,可以參考下一篇。
今天出現了一個新的需求,有個部門需要拿到mongodb中的資料,要求去掉其中一個字段内容相同的資料。
雖然mongodb中有distinct來去重,但是和mysql的distinct不同的是,mysql中能用distinct * 傳回整條記錄的資訊,而mongodb的distinct我卻隻是傳回去重的那個字段的資料(或許mongodb也可以傳回整條,但是我不知道)。
mysql中的distinct傳回完整記錄:
mongodb中distinct去重某個字段:
上邊的内容并不是我想看到的結果,是以便想了一個辦法,去掉重複的資料後重新儲存不重複的資料到某張表中,以下是個例子:
1、進入mongo shell:
2、切換到需要去重的集合所在的資料庫:
3、在mongo shell中編寫并執行js代碼:
如上圖,第一次執行循環的時候由于res沒有定義而失敗,第二次定義了res後,執行成功。那麼在新的集合中,就完全沒有該字段重複的資料了(這裡隻是測試以下,是以就用了同一個集合)。