mongodb - MongoDB 聚合根据每个对象中的值更改键
问题描述
是否有可用于转换以下内容的聚合查询:展开后,我计划根据每个对象内部的值更改键并附加它也有---(类型)
{
"rows": [
{
"type": "aaa",
"values": [
1,
2,
3
]
},
{
"type": "bbb",
"values": [
4,
5,
6
]
}
]
}
到
{
"hasaaa": {
"type": "aaa",
"values": [
1,
2,
3
]
},
"hasbbb": {
"type": "bbb",
"values": [
4,
5,
6
]
}
}
解决方案
$map
rows
迭代数组的循环$concat
准备自定义密钥字符串- 从地图返回键值
$arrayToObject
将键值数组转换为对象
db.collection.aggregate([
{
$project: {
rows: {
$arrayToObject: {
$map: {
input: "$rows",
in: {
k: { $concat: ["has", "$$this.type"] },
v: "$$this"
}
}
}
}
}
}
])
推荐阅读
- r - 在 Shiny 中渲染数据表
- r - 将数据帧从长格式转换为宽格式后,日期变量错误地转换为数值变量
- c++ - 模板类中的模板方法,在类外定义
- scrapy - 如何用scrapy抓取多个页面?
- css - 如何仅在动态引导行中设置第一列的样式
- php - PHP 无法识别符号 '
- coq - 目标中存在下的重写等价
- android - 使用 kotlin 合成时,在 Fragment 的 onViewCreated 上设置视图属性(setText 和 setOnClickListener)不起作用
- javascript - QML 和 RSA 加密
- xl-deploy - 如何在 XLDeploy 中查看已部署构建的占位符值