MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie aktualisiere ich ein tief verschachteltes Array mit C# MongoDB.Driver?

Der Grund warum es nicht funktioniert mit multiplizieren '-1' weil es dasselbe ist wie Positionsoperator $ .In der offiziellen Dokumentation zum Thema "Nested Arrays" können wir als nächstes sehen:

Ab MongoDb 3.6 es gibt neue Funktionen, die es ermöglichen, mit verschachtelten Arrays zu arbeiten.

Der All-Positionsoperator

Der gefilterte Positionsoperator :

Wenn ich also den gefilterten Positionsoperator verwende, sieht mein Code jetzt so aus:

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