Powód, dla którego nie działa z pomnożeniem '-1'
ponieważ jest to to samo co operator pozycyjny
$
.W oficjalnej dokumentacji pod tematem "Zagnieżdżone tablice" widzimy dalej:
Od MongoDb 3.6 pojawiły się nowe funkcje, które pozwalają na pracę z zagnieżdżonymi tablicami.
Filtrowany operator pozycyjny :
Używając filtrowanego operatora pozycji, mój kod wygląda teraz tak:
await coll.UpdateOneAsync(x => x.StoreGuid == storeGuid,
Builders<StoreModel>.Update.Set("configGroup.$[g].config.$[c].value", model.Value),
new UpdateOptions
{
ArrayFilters = new List<ArrayFilterDefinition>
{
new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("g.groupName", groupName)),
new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("c.key", model.Key))
}
});