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

Element tablicy aktualizacji Mongo (sterownik .NET 2.0)

Zajęło mi trochę czasu, aby to rozgryźć, ponieważ nie wydaje się, aby wspomniano o tym w żadnej oficjalnej dokumentacji (ani nigdzie indziej). Znalazłem to jednak w ich trackerze problemów, który wyjaśnia, jak używać operatora pozycyjnego $ ze sterownikiem C# 2.0.

To powinno zrobić to, co chcesz:

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;
}

Zauważ, że Twój Item.Single() klauzula została zmieniona na Item.Any() i przeniesiony do definicji filtra.

[-1] lub .ElementAt(-1) jest najwyraźniej traktowany specjalnie (właściwie wszystko <0) i zostanie zastąpiony operatorem pozycyjnym $ .

Powyższe zostanie przetłumaczone na to zapytanie:

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. Wydajność MongoDB przy rosnącej strukturze danych

  2. Jak MongoDB radzi sobie z równoległymi aktualizacjami?

  3. Spring Data MongoDB z Java 8 LocalDate MappingException

  4. Mongoose findOneAndUpdate i runValidators nie działają

  5. Wykorzystanie indeksu złożonego MongoDB