c# - mongodb c#更新嵌入式文档

标签 c# mongodb

如何更新一些嵌入文档,例如:

我有对象:

{ 
    "_id" : ObjectId("5648c70f574b7e15b0a2ddda"), 
    "Username" : "admin@yourStore.com", 
    "Email" : "admin@yourStore.com", 
    "ShoppingCartItems" : [
        {
            "ProductId" : NumberInt(4), 
            "AdditionalShippingChargeProduct" : NumberInt(0), 
        }, 
        {
            "ProductId" : NumberInt(4), 
            "AdditionalShippingChargeProduct" : NumberInt(0), 
        },
        {
            "ProductId" : NumberInt(5), 
            "AdditionalShippingChargeProduct" : NumberInt(0), 
        },
    ], 
}

我需要更新字段 AdditionalShippingChargeProduct = 5 但仅限于 ProductId 等于 4 的地方。

这段代码只更新第一个位置,我需要更新所有匹配的位置。

    var builder = Builders<Customer>.Filter;
    var filter = builder.ElemMatch(x => x.ShoppingCartItems, y => y.ProductId == 4);
    var update = Builders<Customer>.Update
        .Set("ShoppingCartItems.$.AdditionalShippingChargeProduct", 5);

    var result = customer.UpdateManyAsync(filter, update).Result;

感谢您的帮助。

最佳答案

{ShoppingCartItems.ProductId:4}, {$set:{"ShoppingCartItems.$.AdditionalShippingChargeProduct":6 }}

关于c# - mongodb c#更新嵌入式文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33834416/

相关文章:

c# - 每 X 秒创建一个对象 "Flicker"

node.js - TypeError : db. 集合不是函数,无法获取

c# - 将 C++ 结构体转换为 C# 结构体

c# - 我的绑定(bind)源是否可以告诉我是否发生了更改?

c# - 在 wpf 用户控件中公开一个字段以供外部使用

Java -- MongoDB collection.find() by _id

node.js - Mongoose 日期比较

mongodb - hasgoy/belongsTo导致MongoDB Grails GORM发生意外行为

mongodb - 有没有办法将整个mongodb集合转储到oplog中?

c# - C#查看任务状态的方法