更新嵌入式阵列MongoDB / C#

时间:2013-12-15 18:58:39

标签: c# mongodb mongodb-.net-driver

我有一个有趣的场景,我在Mongo文档中有一个2级嵌入式数组,我似乎无法找到更新第二级内部元素的方法。我尝试过ElemMatch,但它似乎没有用。

我有一个包含Attributes数组的Product文档。此属性数组有多个选项。防爆。产品可以是T恤,具有尺寸,颜色属性。每个属性都可以有选项。对于例如大小有选项XS,S,M,L。现在我希望能够在给定OptionId(和/或属性ID)的情况下更新大小选项。

以下是我的Mongo文档的样子:

{
 "Attributes" : [{
  "_id" : ObjectId("52adf86912a4590a3cb322a5"),
  "Name" : "Size",
  "LabelText" : "Select your T-Shirt Size",
  "Description" : "This is the Size of the T-Shirt",
  "ShowOnDisplay" : true,
  "Options" : [{
      "_id" : ObjectId("52adf86912a4590a3cb322a6"),
      "Name" : "XS",
      "Value" : "XS"
    }, {
      "_id" : ObjectId("52adf86912a4590a3cb322a7"),
      "Name" : "S",
      "Value" : "S"
    }],
  "DateCreatedUtc" : new Date("12/15/2013 10:43:53"),
  "DateModifiedUtc" : new Date("12/15/2013 10:43:53")
}],
"AvailableEndTimeUtc" : null,
"AvailableStartTimeUtc" : null,
"Name" : "CMR Dazzle T-Shirt ",
"Price" : {
"Value" : "25",
"Currency" : "USD"
},
"Sku" : "SKU7fb3a",
 "_id" : ObjectId("52adf86912a4590a3cb322a4")
}

在上面的示例中,我想更新XS以说“X-Small”。我有属性ID和选项ID可用。

我尝试过使用ElemMatch,我尝试过简单的Query.EQ(“Attributes.Options._id”),然后使用更新,没有任何效果。与此类似,我还想删除给定id的选项。

我非常感谢这里的任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为你想要做的就像被讨论here一样。这在Mongo目前是不可能的,请参阅此JIRA