mongodb去重语句详解

  1. db.demo.aggregate(
  2.   {$group: { _id: {text:'$text'},
  3. count: {$sum: 1},
  4. dups: {$addToSet: '$_id'}} },
  5.     {
            $match: {count: {$gt: 1}}
        }
  6. ).forEach(function(doc){
  7.  doc.dups.shift();
  8.  db.demo.remove({_id: {$in: doc.dups}});
    })
  • 整体思路:循环通过存在重复数据的字段进行分组,每有一条数据就计数加1并把重复组的自生成id存入数据中,然后把数组中的第一个id删除,最后通过剩下的id删除数据。
  1. 当前数据库的demo集合调用aggregate方法
  2. 通过字段text对数据进行分类
  3. 每类数据每有一个计数加1并存入变量count中
  4. 将_id不重复的存入dups中
  5. 目前取出的每组数据只要count大于1的数据,取出数据大致如下图:
  6. 调用forEach方法,自定义参数doc指每一组的数据
  7. dups集合中删除第一个id
  8. 将demo中dups中剩下的id对应的记录删除

 

mongodb去重语句详解_第1张图片

 

 

你可能感兴趣的:(招式篇)