使用嵌套字段中的值更新字段
Posted
技术标签:
【中文标题】使用嵌套字段中的值更新字段【英文标题】:Update field with value from a nested field 【发布时间】:2021-09-19 01:41:30 【问题描述】:我知道我可以在 update 中使用管道聚合器来用另一个字段的值更新一个值的字段。但是,我的问题是根据嵌套字段的值更新字段值时。更新的结果总是发出带有括号的新字段。我不想要括号/数组,我只想让它成为一个值。请参阅下面的代码 https://mongoplayground.net/p/7ZDP8CYtKK3
db=
"players": [
"_id": ObjectId("5fba17c1c4566e57fafdcd7e"),
"username": "moshe",
"health": 0,
"maxHealth": 200,
"Chapters": [
"Cat A": 25,
"Cat B": 100,
"Cat C": 125]
]
这是我在下面应用的查询
db.players.update(
username: "moshe",
["$set": "health": "$Chapters.Cat A"]
)
结果产生
["Chapters": [
"Cat A": 25,
"Cat B": 100,
"Cat C": 125],
"_id": ObjectId("5fba17c1c4566e57fafdcd7e"),
"health": [25],
"maxHealth": 200,
"username": "moshe"
]
我想要的是健康更新显示不带数组括号......"health":25
这又是一个基于我正在使用的更大数据库的示例。
【问题讨论】:
【参考方案1】:您可以使用$arrayElemAt 或$first(v4.4) 运算符从数组中选择第一个元素,
db.players.update(
username: "moshe" ,
[
"$set":
"health":
"$arrayElemAt": ["$Chapters.Cat A", 0]
]
)
Playground
【讨论】:
以上是关于使用嵌套字段中的值更新字段的主要内容,如果未能解决你的问题,请参考以下文章