【发布时间】:2020-12-05 01:04:36
【问题描述】:
例如,如果采购订单有这样的行项目:
来自客户端的用户将要更新的订单项发送到一个名为 lineItemsToUpdate 的数组中,格式如下:
[
{ unitCost: 342,
totalQuantity: 13,
acceptedQuantity: 6,
rejectedQuantity: 18,
title: 'Unbranded Concrete Pizza',
description: 'Soft',
variant: 5f2d5eb0195026e6dd549ef0 },
{ unitCost: 189,
totalQuantity: 95,
acceptedQuantity: 49,
rejectedQuantity: 16,
title: 'Handcrafted Rubber Cheese',
description: 'Assurance',
variant: 5f2d5eaf195026e6dd549b7d },
{ unitCost: 267,
totalQuantity: 18,
acceptedQuantity: 93,
rejectedQuantity: 11,
title: 'Incredible Soft Car',
description: 'solution-oriented',
variant: 5f2d5eb0195026e6dd549d3d },
]
在 lineItemsToUpdate 数组中,每个元素的值可能已被客户端更改,如果我以用户的格式描述它,我想通过子文档中的变量字段更新所有匹配元素故事:
根据 lineItemsToUpdate 数组更新所有 lineItems“字段”,其中 lineItemsToUpdate.[elem].variant === linitem.[elem].variant 使用 $set,如果可能,使用 $each 和 arrayFilters 运算符
我通过 mongodb 文档阅读了一些示例,如下所示:
db.students2.update(
{ },
{ $set: { "grades.$[elem].mean" : 100 } },
{
multi: true,
arrayFilters: [ { "elem.grade": { $gte: 85 } } ]
}
)
但这里{ $set: { "grades.$[elem].mean" : 100 } } 的问题是 100 值是恒定的,我希望这部分是动态的,正如我在上面描述的那样。
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregation-framework