python - MongoDB聚合获取字段的不同值和另一个字段的输出列表
问题描述
我有一个 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'
}
}},
])
解决方案
在_id
组的字段中,您应该只指定要分组的键(city
在您的情况下)。
紧随其后的是该键,其余键是您希望从查询结果中获得的附加键。$addToSet
将分组字段的每个结果附加到一个没有重复的数组中。
以下是您要查找的聚合代码:
cursor = db.aggregate([
{
"$group": {
"_id": "$city",
"value": {
"$addToSet": "$value"
}
}
},
])
在 about 代码中,_id
由分组的城市名称组成。
推荐阅读
- java - Spring Boot 嵌入式 Tomcat 服务器未在 intellij idea 中启动
- python - 我制作了 2 个文件,在文件 1 中,我导入了文件 2
- c - 我知道不需要变量来将 prev 节点存储在双向链表中
- javascript - 如何将 JS 代码变成一个 do-while ReCaptcha 循环?
- c++11 - 如何调试线程锁
- c++ - 这个用于存储 shared_ptr 集的 C++ 类:它是线程安全的吗?
- android - 如何在android中的TextView上设置Recyclview项目
- python-3.x - 如何使用 Google Search Console API 获取链接报告?
- paypal - 获取访问令牌时,paypal client_credentials for grant_type 在哪里
- c# - 使用 EF Core 从数据库选择复杂类型的问题