mongodb去除重復(fù)的數(shù)據(jù)
來源:程序員人生 發(fā)布時(shí)間:2016-07-29 15:57:04 閱讀次數(shù):3000次
今天出現(xiàn)了1個(gè)新的需求,有個(gè)部門需要拿到mongodb中的數(shù)據(jù),要求去掉其中1個(gè)字段內(nèi)容相同的數(shù)據(jù)。
雖然mongodb中有distinct來去重,但是和mysql的distinct不同的是,mysql中能用distinct * 返回整條記錄的信息,而mongodb的distinct我卻只是返回去重的那個(gè)字段的數(shù)據(jù)(也許mongodb也能夠返回整條,但是我不知道)。
mysql中的distinct返回完全記錄:
mongodb中distinct去重某個(gè)字段:
上邊的內(nèi)容其實(shí)不是我想看到的結(jié)果,因此便想了1個(gè)辦法,去掉重復(fù)的數(shù)據(jù)后重新保存不重復(fù)的數(shù)據(jù)到某張表中,以下是個(gè)例子:
1、進(jìn)入mongo shell:
3、在mongo shell中編寫并履行js代碼:
var res=db.test.find();
while(res.hasNext()){
var res1=db.test.find();
var re=res.next();
while(res1.hasNext()){
var re1=res1.next();
if(re.age==re1.age){
db.test.remove({"age":re1.age});
}
}
db.test.insert(re);
}
如上圖,第1次履行循環(huán)的時(shí)候由于res沒有定義而失敗,第2次定義了res后,履行成功。那末在新的集合中,就完全沒有該字段重復(fù)的數(shù)據(jù)了(這里只是測試以下,因此就用了同1個(gè)集合)。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)