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

C# MongoDB - Jak přidat a odebrat položku do více vnořených prvků pole?

Můžete zkusit něco jako níže v ovladači 2.5 s verzí 3.6.

Najde dokument pomocí filter kritéria a update který zahrnuje nový poziční identifikátor pro aktualizaci více prvků v poli uvnitř UpdateOne metoda.

$[] aktualizuje všechny Tags pole pro zahrnutí nové položky do všech Categories pole. Funguje jako zástupný symbol pro aktualizaci všech prvků v poli.

Zatlačte

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

Vytáhněte

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

Další informace:

Můžete nastavit ArrayFilters možnosti v UpdateOptions pro použití kritérií dotazu na vnořené pole k řízení toho, jaké prvky se mají aktualizovat.

Chcete-li například aktualizovat všechny kategorie v poli Tags, kde má každý tag Name jméno.

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. MEAN Stack File uploads

  2. Modul nenalezen:Chyba:Nelze vyřešit 'dns' při použití MongoDB

  3. $push a $set ve stejné aktualizaci MongoDB

  4. Ovladač Mongodb C# vrací pouze odpovídající dílčí dokumenty v poli