2013-12-15 3 views
0

У меня есть интересный сценарий, в котором у меня есть 2-уровневый встроенный массив в Mongo Document, и я не могу найти способ обновить элементы внутри второго уровня. Я пробовал ElemMatch, но он, похоже, не работает.Обновление встроенного массива MongoDB/C#

У меня есть документ продукта, который имеет массив атрибутов. Этот массив атрибутов имеет несколько параметров. Ex. Продуктом может быть футболка с атрибутами «Размер», «Цвет». У каждого атрибута могут быть варианты. Напр. У размера есть опции XS, S, M, L. Теперь мне нужна возможность обновить параметр размера, заданный OptionId (и/или Идентификатор атрибута).

Вот как мой Монго документ выглядит следующим образом:

{ 
"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». У меня есть Идентификатор атрибута и Идентификатор параметра.

Я пробовал использовать ElemMatch, я пробовал простой Query.EQ («Attributes.Options._id»), а затем использовал обновление и ничего не работает. Подобно этому, я также хотел бы удалить опцию с учетом идентификатора.

Я почитаю любую помощь здесь.

ответ

1

Я думаю, что вы хотите сделать, это то же самое, что обсуждалось here. В настоящее время это невозможно в Монго, см. Это JIRA.

Смежные вопросы