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

Елемент на масива за актуализиране на Mongo (.NET драйвер 2.0)

Отне ми известно време, за да разбера това, тъй като изглежда не е споменато в нито една от официалната документация (или някъде другаде). Намерих обаче това в техния инструмент за проследяване на проблеми, който обяснява как да използвате позиционния оператор $ с драйвера C# 2.0.

Това трябва да прави това, което искате:

public void UpdateItemTitle(string agendaId, string itemId, string title){
    var filter = Builders<TempAgenda>.Filter.Where(x => x.AgendaId == agendaId && x.Items.Any(i => i.Id == itemId));
    var update = Builders<TempAgenda>.Update.Set(x => x.Items[-1].Title, title);
    var result = _collection.UpdateOneAsync(filter, update).Result;
}

Забележете, че вашият Item.Single() Клаузата е променена на Item.Any() и се премести към дефиницията на филтъра.

[-1] или .ElementAt(-1) очевидно се третира специално (всъщност всичко <0) и ще бъде заменено с позиционния оператор $ .

Горното ще бъде преведено на тази заявка:

db.Agenda.update({ AgendaId: 1, Items.Id: 1 }, { $set: { Items.$.Title: "hello" } })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съхранявайте датата в MongoDB, без да отчитате часовата зона

  2. Вложен масив $pull заявка с помощта на C# MongoDB драйвер

  3. Не може да се свърже с mongodb чрез ip на машината

  4. Нормализация на MongoDB, външен ключ и присъединяване

  5. Кога да Redis? Кога да MongoDB?