MongoDB聚合获取字段的不同值和另一个字段的输出列表

时间:2021-06-23 03:48:08

标签: python mongodb aggregation-framework pymongo

我有一个包含以下文档的 MongoDB 集合:

{'city': 'NYC', 'value': 'blue'},
{'city': 'NYC', 'value': 'red'},
{'city': 'Boston', 'value': 'blue'},
{'city': 'Boston', 'value': 'green'}

我想将城市的不同值与价值的不同值列表聚合,例如:

{'city': 'NYC', 'values': ['blue', 'red']},
{'city': 'Boston', 'values': ['blue', 'green']}

如何在 PyMongo 管道中执行此操作?

带有外壳的东西,例如:

cursor = db.aggregate([
        {'$group': {
            '_id': {
                'value': '$value',
                'city': '$city'
            }
        }},
])

1 个答案:

答案 0 :(得分:1)

在组的 _id 字段中,您应该仅指定要分组的键(在您的情况下为 city)。

接下来是那个键,剩下的键是你想从查询结果中得到的附加键。 $addToSet 会将分组字段的每个发现附加到一个没有重复的数组中。

以下是您要查找的聚合代码:

cursor = db.aggregate([
  {
    "$group": {
      "_id": "$city",
      "value": {
        "$addToSet": "$value"
      }
    }
  },
])

在 about 代码中,_id 由分组的城市名称组成。

相关问题