MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

C# MongoDB - Как да добавяте и премахвате елемент към множество вложени елементи на масив?

Можете да опитате нещо като по-долу в драйвер 2.5 с версия 3.6.

Намира документа с filter критерии и update който включва нов позиционен идентификатор за актуализиране на множество елементи в масив вътре в UpdateOne метод.

$[] актуализира всички Tags масиви за включване на нов елемент във всички Categories масив. Той действа като контейнер за актуализиране на всички елементи в масива.

Натиснете

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

Издърпайте

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

Допълнителна информация:

Можете да зададете ArrayFilters опции в UpdateOptions за прилагане на критерии за заявка към вложен масив, за да контролирате кои елементи да се актуализират.

Например за актуализиране на всички категории в масива с етикети, където всеки етикет има Name име.

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. Възстановете mongodb в сървър за производство на метеор

  2. Лоша практика ли е да се използва mongo ObjectId като идентификатор на потребител?

  3. java.lang.IncompatibleClassChangeError:Внедряване на клас Mongo

  4. Може ли MongoDB WiredTiger двигателя да се използва за предварително обобщени отчети? (подобно на MMAPv1)

  5. Node.js - Mongoose - Актуализиране на вложен масив с всички стойности в req.body