A razão pela qual não funciona com multiplicar
'-1'
porque é o mesmo que operador posicional
$
.Na documentação oficial sob o assunto "Nested Arrays" podemos ver a seguir:Do MongoDb 3.6 existem novos recursos que permitem trabalhar com arrays aninhados.
O operador de todas as posições
O operador posicional filtrado :
Então, usando o operador de posição filtrada, meu código se parece com isso agora:
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))
}
});