gpt4 book ai didi

mongodb - Mongo 使用 $set 添加复制嵌套数组对象值的新字段

转载 作者:行者123 更新时间:2023-12-04 10:32:11 27 4
gpt4 key购买 nike

我想用$set将嵌套在对象数组中的值复制到每个对象,但不是复制单个值,而是投影数组中的所有元素。这是我尝试过的:

db.things.insertOne(
{
name: 'first',
items: [
{ value: 1 },
{ value: 2 }
]
}
)
db.things.updateMany(
{},
[
{"$set": {"items.value_copy": "$items.value"}}
]
)

结果:
{
"_id": {
"$oid": "5e527707f3ae2e9f7adb6e1c"
},
"name": "first",
"items": [
{
"value": 1,
"value_copy": [
1,
2
]
},
{
"value": 2,
"value_copy": [
1,
2
]
}
]
}

预期结果:
{
"_id": {
"$oid": "5e527707f3ae2e9f7adb6e1c"
},
"name": "first",
"items": [
{
"value": 1,
"value_copy": 1
},
{
"value": 2,
"value_copy": 2
}
]
}
db.version();

4.2.3



知道如何达到我的预期目标吗?

最佳答案

这个问题是因为 $items.value将在 items.values 处获得值列表从所有文件。您可以在更新操作中使用聚合管道,这是在 MongoDB v 4.2 中介绍的。重写整个items将新字段添加到其每个对象的数组:

db.thingsNew.update({}, [{
$set: {
items: {
$map: {
input: "$items",
as : 'each',
in: {
"value": "$$each.value",
"value_copy": "$$each.value"
}
}
}
}
}], { multi: true })

关于mongodb - Mongo 使用 $set 添加复制嵌套数组对象值的新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60362503/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com