sql >> Databasteknik >  >> NoSQL >> MongoDB

C# MongoDB - Hur lägger man till och tar bort objekt till flera kapslade arrayelement?

Du kan prova något som nedan i 2.5-drivrutin med 3.6-version.

Hittar dokumentet med filter kriterier och update som inkluderar ny positionsidentifierare för att uppdatera flera element i arrayen inuti UpdateOne metod.

$[] uppdaterar alla Tags arrayer för att inkludera nytt objekt i alla Categories array. Den fungerar som en platshållare för att uppdatera alla element i arrayen.

Tryck

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Push("Tags.$[].Categories", "Item 3");
var result = collection.UpdateOne(filter, update);

Dra

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Pull("Tags.$[].Categories", "Item 3");
var result = collection.UpdateOne(filter, update);

Ytterligare information:

Du kan ställa in ArrayFilters alternativ i UpdateOptions för att tillämpa frågekriterier på kapslad array för att styra vilka element som ska uppdateras.

Till exempel för att uppdatera alla kategorier i taggarray där varje tagg har Name namn.

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Push("Tags.$[t].Categories", "Item 3");
var arrayFilters = new List<ArrayFilterDefinition>{ new ArrayFilterDefinition(new BsonDocument("t.Name", "name")) };
var updateOptions = new UpdateOptions({ArrayFilters = arrayFilters});
var result = collection.UpdateOne(filter, update, updateOptions);



  1. Problem med att köra OAuthd-instans

  2. Det gick inte att ansluta till MongoDB när .NET Core kördes på Linux

  3. Använder du Active Record-generatorer efter Mongoid-installation?

  4. Hur kan jag använda "Not Like"-operatorn i MongoDB