mongodb - 如果在 mongodb 集合中满足条件,则在数组对象中添加两个新字段
问题描述
[
{
"Empname": "Doug",
"Group": [
{
"Category": [
{
"Categoryid": 123,
"Categoryname": "science"
},
{
"Categoryid": 233,
"Categoryname": "Maths"
}
]
}
]
},
{
"Empname": "stark",
"Group": [
{
"Category": [
{
"Categoryid": 123,
"Categoryname": "science"
},
{
"Categoryid": 144,
"Categoryname": "language "
}
]
}
]
}
]
这里我想插入两个字段,如果满足以下条件
{
"Categoryid": 123,
"Categoryname": "science"
}
输出应该像
[
{
"Empname": "Doug",
"Group": [
{
"Category": [
{
"Categoryid": 123,
"Categoryname": "science"
"CategoryLabel": "Hex",
"CategoryCode": "Hex-D",
},
{
"Categoryid": 233,
"Categoryname": "Maths"
}
]
}
]
},
{
"Empname": "stark",
"Group": [
{
"Category": [
{
"Categoryid": 123,
"Categoryname": "science",
"CategoryLabel": "Hex",
"CategoryCode": "Hex-D",
},
{
"Categoryid": 144,
"Categoryname": "language "
}
]
}
]
}
]
解决方案
您需要 update witharrayFilters
以满足Category
数组的条件。
并带有multi: true
更新多个文档。
db.collection.update({},
{
$set: {
"Group.$[].Category.$[category].CategoryLabel": "Hex",
"Group.$[].Category.$[category].CategoryCode": "Hex-D"
}
},
{
arrayFilters: [
{
"category.Categoryid": 123,
"category.Categoryname": "science"
}
],
multi: true
})
推荐阅读
- python - 将 Sympy 表达式传递给 Scipy.optimize.minimize
- ibm-midrange - 您可以使用 RPG 将附加行附加到打印机文件吗?
- javascript - 多个 Webpack 包会覆盖函数名称?
- c# - 是否有任何 Windows API 或 Microsoft 服务以编程方式知道我的 Windows 安装是否是最新版本?
- swift - 发生事情时如何在swift 4中发送推送通知?
- r - 通过减少 data.table 来排序
- function - 如何使用 #temp_table 中的 IN 语句在 Select 块内的标量函数中传递一个 ID 参数
- c# - AppInsights 的心跳功能未出现在 Azure 门户中
- python - 跨多个 EC2 实例自动运行相同 python 脚本的简单方法?
- java - setValue 后 PDFBox 不一致的 PDTextField 自动调整大小行为