MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como atualizar array profundamente aninhado com C# MongoDB.Driver?


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))
        }
    });