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

Hvordan opdaterer man dybt indlejret array med C# MongoDB.Driver?

Grunden til, at det ikke virker med multiplikér '-1' fordi det er det samme som positionsoperatør $ .I officiel dokumentation under emnet "Nested Arrays" kan vi se næste:

Fra MongoDb 3.6 der er nye funktioner, der gør det muligt at arbejde med indlejrede arrays.

All positional operator

Den filtrerede positionsoperator :

Så ved at bruge den filtrerede positionsoperator ser min kode sådan ud nu:

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



  1. Forespørg et dokument på array-elementer i MongoDB ved hjælp af Java

  2. MongoDB-søgning efter DateTime-type virker ikke

  3. Mongodb samlet matchforespørgsel med prioritet på fuld match

  4. Hvordan beregner man forskel mellem værdier af forskellige dokumenter ved hjælp af mongo-aggregering?