У меня есть такая модель:
{
"_id":"5b90eea8c02e062be2888446",
"storeGuid":"e97d4730-9b8a-49ed-be87-caf4054439aa",
"storeId":"0",
"storeDbName":"0",
"tenant":"dev",
"configGroup":[
{
"groupName":"peopleCounter",
"config":[
{
"key":"averageWaitPeriodTime",
"value":"60",
}
]
},
{
"groupName":"sessionMonitor",
"config":[
{
"key":"testKey1",
"value":"987",
},
{
"key":"testKey2",
"value":"123",
}
]
}
]
}
Я пытаюсь обновить value
для "key":"testKey2"
У меня есть такое заявление об обновлении:
await coll.UpdateOneAsync(
x => x.StoreGuid == storeGuid
&& x.ConfigGroup.Any(y => y.GroupName == groupName
&& y.Config.Any(z => z.Key == model.Key)),
Builders<StoreModel>.Update.Set(x => x.ConfigGroup[-1].Config[-1].Value, model.Value));
Когда я пытаюсь обновить, например, groupName
, используя такой фильтр ConfigGroup[-1]
, он работает.
Но в случае, если у нас есть ConfigGroup[-1].Config[-1]
, он не работает.
Я знаю два вариантакак обновить значение:
- просто обновить весь список, используя
ConfigGroup[-1].Config
- или указать конкретные индексы для фильтра, например
ConfigGroup[configGroupIndex].Config[configKeyIndex].Value
Но яхочу знать, почему он не работает с индексом -1
.И как это сделать правильно.
Пожалуйста, ответьте, используя c # MongoDB.Driver .
Заранее спасибо.