码迷,mamicode.com
首页 > 数据库 > 详细

mongodb去除重复的数据

时间:2016-06-28 12:49:18      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:

今天出现了一个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中一个字段内容相同的数据。

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

mysql中的distinct返回完整记录:
技术分享
技术分享

mongodb中distinct去重某个字段:
技术分享
技术分享

上边的内容并不是我想看到的结果,因此便想了一个办法,去掉重复的数据后重新保存不重复的数据到某张表中,以下是个例子:
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); 
}

技术分享

如上图,第一次执行循环的时候由于res没有定义而失败,第二次定义了res后,执行成功。那么在新的集合中,就完全没有该字段重复的数据了(这里只是测试以下,因此就用了同一个集合)。

mongodb去除重复的数据

标签:

原文地址:http://blog.csdn.net/tuzongxun/article/details/51774537

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!