MongoDB-在集合中查找唯一的名称

问题描述 投票:0回答:1

假设我有这样的收藏夹

var list= [{name : "Bob", age : "22"},{name : "John", age : "21"}, {name : "Pedro", age : "15"}, {name : "Bob", age : "11"}, {name : "Mark", age : "24"}]

如何查找具有map-reduce和aggregation-framework唯一名称的MongoDB?结果应为:John,Pedro,Mark

mongodb mapreduce aggregation-framework
1个回答
0
投票

您可以使用$distinct(将返回所有唯一值)

db.collection.distinct("name")

[
    "Bob",
    "John",
    "Pedro",
    "Mark"
]

MongoDB聚合: $group,您可以在对值进行分组之后进行过滤(注意:汇总返回{key:value}对象的列表)

db.collection.aggregate([
  {
    $group: {
      _id: "$name",
      count: {
        $sum: 1
      }
    }
  },
  {
    $match: {
      count: 1
    }
  },
  {
    $group: {
      _id: null,
      unique: {
        $push: "$_id"
      }
    }
  },
  {
    $project: {
      _id: 0
    }
  }
])

[
  {
    "unique": [
      "Pedro",
      "Mark",
      "John"
    ]
  }
]

MongoPlayground

© www.soinside.com 2019 - 2024. All rights reserved.