📜  MongoDB - Distinct() 方法(1)

📅  最后修改于: 2023-12-03 15:03:00.902000             🧑  作者: Mango

MongoDB - Distinct() 方法

在 MongoDB 中,Distinct() 方法可以用于返回指定字段的不同值。本文将介绍 Distinct() 方法的语法和用法。

语法

Distinct() 方法的语法如下所示:

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

参数说明:

  • field:必需,要返回不同值的字段名。

  • query:可选,一个文档,指定查询条件。如果省略则返回集合中所有文档的不同值。

  • options:可选,一个文档,指定额外的选项。常用的选项如下:

    • collation:指定字符串比较的规则。
    • maxTimeMS:指定查询的最大执行时间。超时会抛出异常。
示例

假设有以下集合:

db.users.insertMany([
   { "name": "Alice", "age": 20, "gender": "female" },
   { "name": "Bob", "age": 25, "gender": "male" },
   { "name": "Alice", "age": 30, "gender": "female" },
   { "name": "Charlie", "age": 25, "gender": "male" },
   { "name": "Alice", "age": 25, "gender": "female" },
   { "name": "David", "age": 35, "gender": "male" }
])

我们可以使用 Distinct() 方法得到 name 字段的不同值:

db.users.distinct("name")

输出结果为:

[ "Alice", "Bob", "Charlie", "David" ]

我们也可以加上查询条件,只返回 gender 为 female 的文档的不同 name 值:

db.users.distinct("name", { "gender": "female" })

输出结果为:

[ "Alice" ]

更多用法可以参考 MongoDB 官方文档。

注意事项
  • Distinct() 方法只能用于单个字段的去重。如果需要去重多个字段,可以使用 aggregation pipeline 中的 $group 和 $addToSet。
  • Distinct() 方法返回的是一个数组,如果结果集比较大的话,可能会有性能问题。在这种情况下,可以考虑使用 aggregation pipeline 来优化查询效率。