MongoDB 聚合获取字段的不同值和另一个字段的输出列表
MongoDB aggregate get distinct values of field and output list of another field
我有一个 MongoDB 集合,其中包含如下文档:
{'city': 'NYC', 'value': 'blue'},
{'city': 'NYC', 'value': 'red'},
{'city': 'Boston', 'value': 'blue'},
{'city': 'Boston', 'value': 'green'}
我想将 city 的不同值与不同值的列表进行聚合,例如:
{'city': 'NYC', 'values': ['blue', 'red']},
{'city': 'Boston', 'values': ['blue', 'green']}
如何在 PyMongo 管道中执行此操作?
带有 shell 的东西,例如:
cursor = db.aggregate([
{'$group': {
'_id': {
'value': '$value',
'city': '$city'
}
}},
])
在组的 _id
字段中,您应该仅指定要分组的键(在您的情况下为 city
)。
后面是该键,其余键是您希望从查询结果中获得的其他键。 $addToSet
会将分组字段的每个发现追加到一个数组中,不重复。
以下是您要查找的聚合代码:
cursor = db.aggregate([
{
"$group": {
"_id": "$city",
"value": {
"$addToSet": "$value"
}
}
},
])
在关于代码中,_id
由分组的城市名称组成。
我有一个 MongoDB 集合,其中包含如下文档:
{'city': 'NYC', 'value': 'blue'},
{'city': 'NYC', 'value': 'red'},
{'city': 'Boston', 'value': 'blue'},
{'city': 'Boston', 'value': 'green'}
我想将 city 的不同值与不同值的列表进行聚合,例如:
{'city': 'NYC', 'values': ['blue', 'red']},
{'city': 'Boston', 'values': ['blue', 'green']}
如何在 PyMongo 管道中执行此操作?
带有 shell 的东西,例如:
cursor = db.aggregate([
{'$group': {
'_id': {
'value': '$value',
'city': '$city'
}
}},
])
在组的 _id
字段中,您应该仅指定要分组的键(在您的情况下为 city
)。
后面是该键,其余键是您希望从查询结果中获得的其他键。 $addToSet
会将分组字段的每个发现追加到一个数组中,不重复。
以下是您要查找的聚合代码:
cursor = db.aggregate([
{
"$group": {
"_id": "$city",
"value": {
"$addToSet": "$value"
}
}
},
])
在关于代码中,_id
由分组的城市名称组成。