db.collection.distinct(field, query, options)
获取某个字段的唯一值,仅可对单一字段去重。
若对多字段去重,可使用group分组操作
1.field为需要去重的字段,为必须字段。
无条件排重
db.getCollection("表名").distinct("字段名");
2.query为去重的筛选条件,为可选字段。
有条件排重
db.getCollection("表名").distinct('字段名',{筛选条件})
3.options 为其他选项一般应用较少
db.getCollection("表名").distinct('字段名',{筛选条件},{
collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}})
去除重复的表名
db.collection.distinct()
distinct 有去重上限
Error: distinct too big, 16mb cap
示例
1、在表xaaa中对article_location字段去重
db.getCollection("xaaa").distinct("article_location");
![](https://img.haomeiwen.com/i10548957/973016f5c79f1302.png)
2、在表article_info中 对article_vendor字段去重,筛选条件为year字段不存在
db.getCollection("article_info").distinct('article_vendor',{"year": {"$exists":false}});
![](https://img.haomeiwen.com/i10548957/29779207d3ce83ab.png)
3、对数组字段去重
db.getCollection("distinct").distinct("language")
![](https://img.haomeiwen.com/i10548957/1b084d9c02a675f3.png)
![](https://img.haomeiwen.com/i10548957/5af14b19acc2cec8.png)
4、对嵌入字段去重
db.getCollection("distinct").distinct("article_numbers.vol")
![](https://img.haomeiwen.com/i10548957/d477b638e25b0204.png)
![](https://img.haomeiwen.com/i10548957/2653144a1d205acc.png)
网友评论