MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come aggiornare un array profondamente nidificato con C# MongoDB.Driver?

Il motivo per cui non funziona con moltiplicare '-1' perché è lo stesso di operatore posizionale $ .Nella documentazione ufficiale sotto l'argomento "Nested Arrays" possiamo vedere di seguito:

Da MongoDb 3.6 ci sono nuove funzionalità che consentono di lavorare con gli array nidificati.

L'operatore tutto posizionale

L'operatore posizionale filtrato :

Quindi, usando l'operatore di posizione filtrata il mio codice ora appare così:

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