php mongo distinct,MongoDB distinct() 指定字段去重

db.collection.distinct(field, query, options)

获取某个字段的唯一值,仅可对单一字段去重。

若对多字段去重,可使用group分组操作

1.field为需要去重的字段,为必须字段。

无条件排重

db.getCollection("表名").distinct("字段名");

2.query为去重的筛选条件,为可选字段。

有条件排重

db.getCollection("表名").distinct('字段名',{筛选条件})

3.options 为其他选项一般应用较少

db.getCollection("表名").distinct('字段名',{筛选条件},{

collation: {

locale: ,

caseLevel: ,

caseFirst: ,

strength: ,

numericOrdering: ,

alternate: ,

maxVariable: ,

backwards:

}})

去除重复的表名

db.collection.distinct()

distinct 有去重上限

Error: distinct too big, 16mb cap

示例

1、在表xaaa中对article_location字段去重

db.getCollection("xaaa").distinct("article_location");

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

示例1

2、在表article_info中 对article_vendor字段去重,筛选条件为year字段不存在

db.getCollection("article_info").distinct('article_vendor',{"year": {"$exists":false}});

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

示例2

3、对数组字段去重

db.getCollection("distinct").distinct("language")

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

去重前内容

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

去重后内容

4、对嵌入字段去重

db.getCollection("distinct").distinct("article_numbers.vol")

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

去重前

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

去重后

5、获取去重后result的长度

db.getCollection("distinct").distinct("vendor").length

95db57fd93b3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation