sql >> Databáze >  >> NoSQL >> MongoDB

Pochopení změn v novém ovladači MongoDB C# (Async a Await)

Je užitečné porozumět základům async / await protože je to poněkud děravá abstrakce a má řadu úskalí.

V zásadě máte dvě možnosti:

  • Zůstaňte synchronní. V tomto případě je bezpečné použít .Result a .Wait() na asynchronních hovorech, resp. něco jako

    // Insert:
    collection.InsertOneAsync(user).Wait();
    
    // FindAll:
    var first = collection.Find(p => true).ToListAsync().Result.FirstOrDefault();
    
  • Přejděte asynchronně ve své kódové základně. Dělat to asynchronně je bohužel docela 'infekční', takže buď převedete skoro všechno na asynchronní, nebo ne. Pozor, nesprávné smíchání synchronizace a asynchronizace povede k uváznutí . Použití async má řadu výhod, protože váš kód může běžet i nadále, zatímco MongoDB stále funguje, např.

    // 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. Jak získat více výsledků v mongoose a spojit je do jedné jediné odpovědi

  2. Přístupy k ukládání geoprostorových dat v Redis

  3. Iterujte přes Mongodb kurzor z agregace

  4. Jak promítnout aktualizované hodnoty pouze pomocí findOneAndUpdate ve vestavěném poli Mongoose?