sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man uppdaterar objekt från array kapslad i array

I MongoDB 4.0 kan du använda $[<identifier>] syntax och lägg till ArrayFilters till 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 kommer att identifiera Inventory unikt objekt som behöver uppdateras i Options




  1. Är skillnaden mellan två listor igen?

  2. Spring Boot kan inte uppdatera sharded-samlingen på azure cosmos db(MongoDb)

  3. MongoDB 4.0 Transaktioner:ACID Läsa + Skriva?

  4. Den snabbaste MongoDB på Azure!