MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment mettre à jour un tableau profondément imbriqué avec C# MongoDB.Driver ?

La raison pour laquelle cela ne fonctionne pas avec la multiplication '-1' car c'est la même chose que opérateur positionnel $ .Dans la documentation officielle sous le thème "Nested Arrays", nous pouvons voir ensuite :

À partir de MongoDb 3.6 il y a de nouvelles fonctionnalités qui permettent de travailler avec des tableaux imbriqués.

L'opérateur tout positionnel

L'opérateur positionnel filtré :

Donc, en utilisant l'opérateur de position filtrée, mon code ressemble maintenant à ceci :

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