2015-11-20 132 views
2

如何更新一些嵌入式的文件,例如:MongoDB的C#更新嵌入文档

我有对象:

{ 
    "_id" : ObjectId("5648c70f574b7e15b0a2ddda"), 
    "Username" : "[email protected]", 
    "Email" : "[email protected]", 
    "ShoppingCartItems" : [ 
     { 
      "ProductId" : NumberInt(4), 
      "AdditionalShippingChargeProduct" : NumberInt(0), 
     }, 
     { 
      "ProductId" : NumberInt(4), 
      "AdditionalShippingChargeProduct" : NumberInt(0), 
     }, 
     { 
      "ProductId" : NumberInt(5), 
      "AdditionalShippingChargeProduct" : NumberInt(0), 
     }, 
    ], 
} 

我需要更新域AdditionalShippingChargeProduct = 5但只有在产品编号等于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; 

感谢您的任何帮助。

回答

-1

{ShoppingCartItems.ProductId:4},{$组:{ “ShoppingCartItems $ AdditionalShippingChargeProduct。” 6}}

+0

此评论有一些额外的注释做的,正确的代码格式化 – Jonnus