gpt4 book ai didi

mongodb - 根据 MongoDB 中的属性更新嵌套数组对象

转载 作者:行者123 更新时间:2023-12-03 02:14:49 25 4
gpt4 key购买 nike

我有一个 MongoDB 集合,其中包含如下所示的文档:

{
createdTimestamp: 111111111111,
items: [{
itemName: 'Name 1',
quantity: 10
}, {
itemName: 'Name 2'
quantity: 20
}]
}

现在,我想要更新所有文档,以便将 itemName: 'Name 1' 更新为 itemName: 'New Name'。更新后,上述文档应如下所示:

{
createdTimestamp: 111111111111,
items: [{
itemName: 'New Name',
quantity: 10
}, {
itemName: 'Name 2'
quantity: 20
}]
}

有没有办法做到这一点,而无需自己迭代所有文档?

最佳答案

您需要使用$ positional运算符来更新数组元素,并使用 multi: true 选项,您可以更新具有相同匹配的多个文档

db.collection.update(
{ 'items': { '$elemMatch': { 'itemName': 'Name 1' }}},
{ '$set': { 'items.$.itemName': 'New Name' }},
{ 'multi': true }
)

以及 mongodb 3.6 arrayFilters

db.collection.update(
{ 'items': { '$elemMatch': { 'itemName': 'Name 1' }}},
{ '$set': { 'items.$[item].itemName': 'New Name' }},
{ 'arrayFilter': [{ 'item.itemName': 'Name 1' }], 'multi': true }
)

关于mongodb - 根据 MongoDB 中的属性更新嵌套数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605347/

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