sql >> Database >  >> NoSQL >> MongoDB

C# MongoDB - Hoe kan ik een item toevoegen aan en verwijderen uit meerdere geneste array-elementen?

Je kunt zoiets als hieronder proberen in 2.5 driver met 3.6 versie.

Vindt het document met filter criteria en update inclusief nieuwe positionele identifier om meerdere elementen in de array bij te werken binnen UpdateOne methode.

$[] werkt alle Tags bij arrays om een ​​nieuw item op te nemen in alle Categories reeks. Het fungeert als een tijdelijke aanduiding voor het bijwerken van alle elementen in de array.

Duwen

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

Trek

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

Aanvullende informatie:

U kunt de ArrayFilters . instellen opties in UpdateOptions voor het toepassen van zoekcriteria op geneste arrays om te bepalen welke elementen moeten worden bijgewerkt.

Bijvoorbeeld om alle categorieën in de tags-array bij te werken, waarbij elke tag Name . heeft naam.

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. Hoe beschrijf ik een collectie in Mongo?

  2. Hoe group by toepassen op genest document in MongoDB met MongoTemplate?

  3. Hoe documenten te sorteren op basis van de lengte van een matrixveld

  4. Is het mogelijk om de laatste x records uit een collectie te mongodumpen?