📜  mongodb distinct (1)

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

MongoDB Distinct

MongoDB Distinct是一种查询操作,可用于从集合中获取唯一值的列表。

基本语法
db.<collection>.distinct(<key>, <query>, <options>)

其中:

  • db:数据库实例
  • :集合名称
  • :指定集合中要获取唯一值的字段名
  • :指定用于过滤文档的查询条件。如果不需要过滤,则传入空对象:{}
  • :可选参数。常见的可选参数包括排序和超时等设置。详情请参考官方文档。

以下是一个示例,获取一个名为“users”的集合中,所有已经注册过的用户的唯一籍贯:

db.users.distinct("hometown", { registered: true })
举例说明

假设我们现有一个包含以下数据的集合:

db.students.insertMany([
  { name: "Tom", age: 18, city: "Shanghai" },
  { name: "Jerry", age: 19, city: "Beijing" },
  { name: "Lucy", age: 20, city: "Shanghai" },
  { name: "Helen", age: 21, city: "Nanjing" },
  { name: "Ben", age: 22, city: "Beijing" },
]);

我们希望获取这个集合中,所有不同的城市列表。可以使用以下语句:

db.students.distinct("city")

返回结果如下:

[ "Shanghai", "Beijing", "Nanjing" ]

这样就能够获取到各个城市的列表,而且不存在重复数据。

注意事项
  • distinct方法返回的是一个数组,里面包含了所有符合查询条件的唯一值。
  • 如果目标字段有多个值,结果会返回一个包含所有不同值的数组。
  • 如果目标字段是一个嵌套文档,需要使用点号(“.”)来表示嵌套属性。
  • 如果目标字段是数组,可以使用$unwind操作符,将数组展开后再执行distinct操作。