sql >> Database teknologi >  >> NoSQL >> MongoDB

Forstå ændringerne i MongoDB ny C#-driver (Async og Await)

Det er nyttigt at forstå det grundlæggende i async / await fordi det er en noget utæt abstraktion og har en række faldgruber.

Grundlæggende har du to muligheder:

  • Forbliv synkron. I dette tilfælde er det sikkert at bruge .Result og .Wait() på henholdsvis de asynkrone opkald, f.eks. noget lignende

    // Insert:
    collection.InsertOneAsync(user).Wait();
    
    // FindAll:
    var first = collection.Find(p => true).ToListAsync().Result.FirstOrDefault();
    
  • Gå asynkron i din kodebase. At gøre det async er ret 'smittende', desværre, så enten konverterer du stort set alt til asynkron, eller ej. Forsigtig, at blande synkronisering og async forkert vil føre til dødvande . At bruge async har en række fordele, fordi din kode kan fortsætte med at køre, mens MongoDB stadig fungerer, f.eks.

    // 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. MongoDB forbinder data inde i en række objekter

  2. Loopback-relationer udfylder ikke matrix af objekt-id'er

  3. MongoDB:Kort indlejret array i aggregeret funktion

  4. Slipning af Mongo-samlingen rydder ikke diskplads