MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

C# MongoDB — Jak dodawać i usuwać elementy z wielu zagnieżdżonych elementów tablicy?

Możesz spróbować czegoś takiego jak poniżej w sterowniku 2.5 z wersją 3.6.

Znajduje dokument za pomocą filter kryteria i update który zawiera nowy identyfikator pozycji zaktualizować wiele elementów w tablicy wewnątrz UpdateOne metoda.

$[] aktualizuje wszystkie Tags tablice do uwzględnienia nowego elementu we wszystkich Categories szyk. Działa jako symbol zastępczy do aktualizacji wszystkich elementów w tablicy.

Naciśnij

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

Pociągnij

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

Dodatkowe informacje:

Możesz ustawić ArrayFilters opcje w UpdateOptions do stosowania kryteriów zapytania w zagnieżdżonej tablicy w celu kontrolowania, które elementy mają zostać zaktualizowane.

Na przykład, aby zaktualizować wszystkie kategorie w tablicy Tagi, gdzie każdy tag ma Name imię.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose:findOneAndUpdate nie aktualizuje istniejącego pola

  2. Administrator Django i MongoDB, w ogóle możliwe?

  3. MongoDB MapReduce - Emituj jeden klucz / jedną wartość nie wywołuje redukcji

  4. Repozytorium Spring Data i MongoDB - jak stworzyć zapytanie aktualizacyjne?

  5. Wiosenna paginacja danych mongo