sql >> Databasteknik >  >> NoSQL >> MongoDB

Förstå ändringarna i MongoDB nya C#-drivrutin (Async och Await)

Det är till hjälp att förstå grunderna i async / await eftersom det är en något läckande abstraktion och har ett antal fallgropar.

Du har i huvudsak två alternativ:

  • Förbli synkron. I det här fallet är det säkert att använda .Result och .Wait() på de asynkrona anropen, t.ex. något liknande

    // Insert:
    collection.InsertOneAsync(user).Wait();
    
    // FindAll:
    var first = collection.Find(p => true).ToListAsync().Result.FirstOrDefault();
    
  • Gå asynkronisera i din kodbas. Att göra det asynkront är tyvärr ganska "smittsamt", så antingen konverterar du i stort sett allt till asynkront eller inte. Var försiktig, blandning av synkronisering och asynkronisering på fel sätt kommer att leda till dödlägen . Att använda async har ett antal fördelar, eftersom din kod kan fortsätta att köras medan MongoDB fortfarande fungerar, t.ex.

    // 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. Hitta dokument i MongoDB vars med ett matrisfält är en delmängd av en frågematris

  2. Infoga array av objekt i MongoDB

  3. redis anslutningsfel i docker-behållaren

  4. returnera endast den sista nivån av den inbäddade egenskapen som söks i ett dokument