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

Sådan opdateres element fra array indlejret i array

I MongoDB 4.0 kan du bruge $[<identifier>] syntaks og tilføj ArrayFilters til UpdateOptions parameter:

var filter = Builders<Model>.Filter.Empty;
var update = Builders<Model>.Update.Set("Options.$[option].Inventory.$[inventory].Name", "New name");

var arrayFilters = new List<ArrayFilterDefinition>();
ArrayFilterDefinition<BsonDocument> optionsFilter = new BsonDocument("option.Id", new BsonDocument("$eq", optionId));
ArrayFilterDefinition<BsonDocument> inventoryFilter = new BsonDocument("inventory.Id", new BsonDocument("$eq", inventoryId));
arrayFilters.Add(optionsFilter);
arrayFilters.Add(inventoryFilter);

var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };

var result = DefaultCollection.UpdateOne(filter, update, updateOptions);

Det vil entydigt identificere Inventory element, der skal opdateres i Options




  1. Farerne ved at bygge indekser på MongoDB

  2. Mongo Query Indlejrede feltværdier med ukendte overordnede nøgler på to niveauer

  3. Cosmos DB Mongo API Hvordan man administrerer anmodningshastigheden er stor

  4. Kan ikke opgradere sharded mongoDB eller stoppe balanceren