【问题描述】
怎样对集合中的数据进行去重操作?
【解决办法】
1.可以使用聚集符$group实现对结果集的分组,类似SQL中的group by 语句,然后使用$group支持的聚集函数$addtoset将字段添加到数组中,相同的字段值只会添加一次
2.如,集合中存在如下数据:
{"id":1,"name":"name1","mobile":111}
{"id":2,"name":"name2","mobile":222}
{"id":3,"name":"name1","mobile":333}
{"id":4,"name":"name1","mobile":111}
{"id":5,"name":"name2","mobile":444}
对记录分组后将指定字段添加到数组中输出:
db.cs.cl.aggregate({$group:{addtoset_name:{$addtoset:"$name"}}})
返回结果:
{"addtoset_name":["name1","name2"]}
【详情参考】
聚集符$group :http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190936-edition_id-0