Причината, поради която не работи с умножение '-1'
защото е същото като позиционен оператор
$
.В официалната документация под темата „Вложени масиви“ можем да видим следното:
От MongoDb 3.6 има нови функции, които позволяват работа с вложени масиви.
Филтрираният позиционен оператор :
И така, използвайки оператора за филтрирана позиция, моят код сега изглежда така:
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))
}
});