sql >> Databáze >  >> NoSQL >> MongoDB

Jak aktualizovat položku z pole vnořeného do pole

V MongoDB 4.0 můžete použít $[<identifier>] syntaxe a přidejte ArrayFilters na UpdateOptions parametr:

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

To bude jedinečně identifikovat Inventory položka, kterou je třeba aktualizovat v Options




  1. mongoDB map/reduce mínus snížení

  2. Při připojování MongoDB Atlas k Mongoose došlo k chybě časového limitu

  3. bson.D vs bson.M pro vyhledávací dotazy

  4. StackExchange.Redis:Dávkový přístup pro více hashů