程序员人生 网站导航

mongodb去除重复的数据

栏目:数据库应用时间:2016-07-29 15:57:04
今天出现了1个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中1个字段内容相同的数据。

虽然mongodb中有distinct来去重,但是和mysql的distinct不同的是,mysql中能用distinct * 返回整条记录的信息,而mongodb的distinct我却只是返回去重的那个字段的数据(也许mongodb也能够返回整条,但是我不知道)。

mysql中的distinct返回完全记录:


mongodb中distinct去重某个字段:


上边的内容其实不是我想看到的结果,因此便想了1个办法,去掉重复的数据后重新保存不重复的数据到某张表中,以下是个例子:
1、进入mongo shell:
./mongo

2、切换到需要去重的集合所在的数据库
use admin

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次履行循环的时候由于res没有定义而失败,第2次定义了res后,履行成功。那末在新的集合中,就完全没有该字段重复的数据了(这里只是测试以下,因此就用了同1个集合)。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐