Ich habe eine Beispiel-App mit den 1.0 und 2.0 C# -Treibern für MongoDb erstellt.Ergebnisse von 2.0 erhalten MongoDb C# -Treiber
Sie serialisieren die gleichen Objekte und ich kann mit beiden schreiben und von der 1.0 lesen. Aber ich bin nicht in der Lage, FindAsync
in der 2.0 zu verwenden, um mir irgendwelche Ergebnisse zu geben.
Hier ist meine 1.0-Abfrage, die ein Dokument zurückgibt:
var results = collection.AsQueryable<FlatCatalogItem>()
.FirstOrDefault(c => c.BatchId == "2015.01.27"
&& c.Upcs.Any(u => u.UPC == "123456803"));
Meine 2.0 Abfrage die gleichen Daten mit dem FindAsync
sieht wie folgt aus:
var task = collection.FindAsync(item => item.BatchId == "2015.01.27"
&& item.Upcs.Any(u => u.UPC == "123456803"));
task.Wait();
var results = task.Result;
Die AsyncCursor
, die von Ergebnis zurückgegeben hat nichts drin.
Dies könnte meine Ignoranz mit async sein und warten, oder vielleicht habe ich etwas anderes mit den 2.0 Methoden find? Beachten Sie, dass ich nicht die legacy 2.0 drivers
Irgendeine Idee, warum sie eine FindAsync- und eine Find-Methode haben? Beide haben eine FirstOrDefaultAsync-Methode für sie. –
@ runxc1BretFerrier Der Unterschied ist der Rückgabewert 'FindAsync' gibt einen' IAsyncCursor' zurück während 'Find'' IFindFluent' zurückgibt. Mit IFindFluent können Sie die Suche weiter definieren, bevor Sie sie tatsächlich ausführen (z. B. eine Projektion oder Sortierung hinzufügen). 'FindAsync' führt die Abfrage sofort aus und gibt einen Cursor zurück. Sie können einen Cursor von "IFindFluent" mit "ToCursorAsync" erhalten. – i3arnon
@ runxc1BretFerrier 'IAsyncCursor' hat nicht' FirstOfDefaultAsync', obwohl ... – i3arnon