MongoDB collection.distinct() 方法

distinct() 方法是 Mongodb 中用来获取指定集合中某个字段不同值的方法。它可以查询出一个集合中某个字段的所有不同值,将它们作为数组返回。distinct() 方法对于对于对某些字段进行统计,分组查询非常有用。

语法

distinct() 方法的语法如下:

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

其中,

  • field:表示需要查询的字段;
  • query:表示查询条件,可以为空;
  • options:表示一些可选参数,例如 collationhint 等。

使用场景

distinct() 方法适用于以下场景:

  • 获取一个集合中某个字段的所有不同值;
  • 对某个字段进行统计,分组查询等。

示例

假设我们有一个名为 students 的集合,其中包含了多个学生文档。每个文档包含 _idnameagegenderscore 等字段。现在,我们需要查询出 students 集合中所有不同的年龄值。

db.students.distinct("age")

执行以上代码,返回的结果如下:

[20, 21, 22, 23, 24, 25]

另外一个示例,假设我们有一个名为 orders 的集合,其中包含了多个订单文档。每个文档包含 _idcustomer_idstatusitems 等字段。现在,我们需要查询出 orders 集合中所有不同的 status 值,并按照顺序进行排序。

db.orders.distinct(
  "status",
  {},
  { collation: { locale: "en", strength: 2 }, sort: 1 }
)

执行以上代码,返回的结果如下:

["canceled", "completed", "in progress", "pending"]

结论

distinct() 方法是 Mongodb 中非常有用的查询方法,它可以查询出一个集合中某个字段的所有不同值,并将它们作为数组返回。distinct() 方法对于对某些字段进行统计,分组查询非常有用。在使用时需要注意,distinct() 方法返回的数组中只包含指定字段的值,而不包括文档本身。此外,distinct() 方法在处理大量数据时可能会影响查询性能,因此需要注意使用时的数据量。