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

Zrozumienie zmian w nowym sterowniku MongoDB C# (Async i Await)

Pomocne jest zrozumienie podstaw async / await ponieważ jest to nieco nieszczelna abstrakcja i ma wiele pułapek.

Zasadniczo masz dwie opcje:

  • Pozostań synchroniczny. W takim przypadku można bezpiecznie użyć .Result i .Wait() na wywołaniach asynchronicznych, odpowiednio, np. coś takiego

    // Insert:
    collection.InsertOneAsync(user).Wait();
    
    // FindAll:
    var first = collection.Find(p => true).ToListAsync().Result.FirstOrDefault();
    
  • Przejdź asynchronicznie w swojej bazie kodu. Robienie tego asynchronicznie jest niestety dość "zakaźne", więc albo konwertujesz prawie wszystko na asynchroniczne, albo nie. Ostrożnie, nieprawidłowe mieszanie synchronizacji i asynchronii doprowadzi do zakleszczenia . Używanie async ma wiele zalet, ponieważ Twój kod może nadal działać, gdy MongoDB nadal działa, np.

    // FindAll:
    var task = collection.Find(p => true).ToListAsync();
    // ...do something else that takes time, be it CPU or I/O bound
    // in parallel to the running request. If there's nothing else to 
    // do, you just freed up a thread that can be used to serve another 
    // customer...
    // once you need the results from mongo:
    var list = await task;
    


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zaimplementować oAuth2 wraz z uwierzytelnianiem JWT w spring boot?

  2. Wyjaśnienie upsert MongoDB

  3. MongoDB $setOnInsert

  4. MongoDB ISODate() a sygnatura czasowa UNIX

  5. MongoDB nie uruchamia się po awarii serwera