La razón por la que no funciona con multiplicar '-1'
porque es lo mismo que operador posicional
$
.En la documentación oficial bajo el tema "Nested Arrays" podemos ver a continuación:
Desde MongoDb 3.6 hay nuevas funciones que permiten trabajar con arreglos anidados.
El operador de todas las posiciones
El operador posicional filtrado :
Entonces, usando el operador de posición filtrada, mi código ahora se ve así:
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))
}
});