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

Jak se IAsyncCursor používá pro iteraci s ovladačem mongodb c#?

Máte 3 možnosti:

  1. Použijte vestavěnou metodu ovladače (např. ForEachAsync , ToListAsync ).
  2. V jazyce C# 8.0 a vyšším můžete převést IAsyncCursor do IAsyncEnumerable a použijte await foreach nebo jakýkoli asynchronní operátor LINQ.
  3. Opakujte přes IAsyncCursor .
Metody vestavěných ovladačů

Ovladač má některé metody rozšíření podobné LINQ pro IAsyncCursor , například AnyAsync , ToListAsync , atd. Pro iteraci má ForEachAsync :

var cursor = await client.ListDatabasesAsync();
await cursor.ForEachAsync(db => Console.WriteLine(db["name"]));
Převod na IAsyncEnumerable

Na C# 8.0 a vyšších musí být hezčí iterovat s await foreach (a použijte asynchronní LINQ). To vyžaduje zabalení IAsyncCursor v IAsyncEnumerable .Můžete to udělat sami, ale protože je důležité uvést některé důležité věci do pořádku (jako je zrušení a likvidace), zveřejnil jsem balíček nuget:MongoAsyncEnumerableAdapter

var cursor = await client.ListDatabasesAsync();
await foreach (var db in cursor.ToAsyncEnumerable())
{
    Console.WriteLine(db["name"]);
}
Vlastní iterace

Tradiční iterace v C# se provádí pomocí IEnumerable a foreach . foreach je syntaktický cukr kompilátoru. Je to vlastně volání GetEnumerator , using rozsah a while smyčka:

using (var enumerator = enumerable.GetEnumerator())
{
    while (enumerator.MoveNext())
    {
        var current = enumerator.Current;
        // use current.
    }
}

IAsyncCursor je ekvivalentní IEnumerator (výsledek IEnumerable.GetEnumerator ), zatímco IAsyncCursorSource je IEnumerable . Rozdíl je v tom, že tyto podporují async (a získat dávku každé iterace a ne pouze jednu položku). Takže můžete implementovat celý using , while smyčka věc sami:

IAsyncCursorSource<int> cursorSource = null;

using (var asyncCursor = await cursorSource.ToCursorAsync())
{
    while (await asyncCursor.MoveNextAsync())
    {
        foreach (var current in asyncCursor.Current)
        {
            // use current
        }
    }
}


  1. Připojte mongo db ke vzdálenému serveru nodejs

  2. Příklad MongoDB pro Yesod / Persistent

  3. Analyzujte migraci na heroku/aws týkající se obrázku

  4. Skript se pokusil vytvořit globální proměnnou