sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo actualizar una matriz profundamente anidada con C# MongoDB.Driver?

La razón por la que no funciona con multiplicar '-1' porque es lo mismo que operador posicional $ .En la documentación oficial bajo el tema "Nested Arrays" podemos ver a continuación:

Desde MongoDb 3.6 hay nuevas funciones que permiten trabajar con arreglos anidados.

El operador de todas las posiciones

El operador posicional filtrado :

Entonces, usando el operador de posición filtrada, mi código ahora se ve así:

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