【发布时间】:2020-07-15 07:07:18
【问题描述】:
我需要更新 nested 集合中的属性。所有示例都描述了设置具体值,而不是来自另一个字段的值。
MongoDB 版本:4.2
C#驱动版本:2.10.4
产品示例:
{
_id: "1",
Title: "Some title",
Price: 20,
OriginalPrice: 10,
... other props ...
Variants:
[
{
Price: 21,
OriginalPrice: 11
... other props ...
},
{
Price: 22,
OriginalPrice: 13
... other props ...
},
]
}
我知道如何更新Price
var pipeline = PipelineDefinition<Product, Product>.Create("{'$set': {'Price': '$OriginalPrice'}}");
productCollection.UpdateMany(FilterDefinition<Product>.Empty, Builders<Product>.Update.Pipeline(pipeline));
但是我如何将Variants.Price 更新为Variants.OriginalPrice?尝试
var pipeline = PipelineDefinition<Product, Product>.Create("{'$set': {'Price': '$OriginalPrice', 'Variants.$[].Price': '$Variants.$[].OriginalPrice'}}");
productCollection.UpdateMany(FilterDefinition<Product>.Empty, Builders<Product>.Update.Pipeline(pipeline));
但是发生了错误。
更新 1:变体包含其他属性。
@Mickl 的answer 是解决方案,但是
覆盖整个嵌套集合是最佳方式吗?
【问题讨论】:
标签: c# mongodb aggregation-framework mongodb-.net-driver