J'ai construit une application d'exemple à l'aide du 1.0 et 2.0 C # Pilotes pour MongoDB.
Ils sérialisent les mêmes objets et je suis capable d'écrire avec les deux et de lire à partir de la 1,0. Mais je ne suis pas capable d'utiliser Voici ma requête 1.0 qui renvoie un document: P> Findasync code> dans le 2.0 pour me donner des résultats. P>
results.MoveNextAsync().Wait(); // results.Current.Count = 0
3 Réponses :
Pouvez-vous s'il vous plaît essayez ceci? J'essaie de s'habituer à la nouvelle API également. P> P>
Je ne sais pas toujours comment utiliser les méthodes d'asynchronisation de trouver, mais cela fonctionne.
La nouvelle API est async code> -Onely, vous ne devriez pas bloquer dessus. Ce n'est pas évolutif et pourrait éventuellement conduire à des blocages. Utilisez
async-attendre code> tout le chemin ou continuez à utiliser l'ancienne API. Dans une méthode code> async code>, la requête doit ressembler à ceci:
async Task Foo()
{
FlatCatalogItem first = await collection.
Find(c => c.BatchId == "2015.01.27" && c.Upcs.Any(u => u.UPC == "123456803")).
FirstOrDefaultAsync();
// use first
}
Une idée pourquoi ils ont une méthode Findasync et une méthode de recherche? Qui ont tous deux une méthode de FirstEfAllauLSync sur eux.
@ Runxc1BretFerrier La différence est la valeur de retour FINASYNC code> renvoie un
iAsynccursor code> tandis que
Recherche code> retourne
ifindfluent code>.
ifindfluent code> vous permet de définir davantage la recherche avant de le faire (par exemple, ajoutez une projection ou une sorte).
FINDASYNC CODE> Effectue la requête immédiatement et renvoie un curseur. Vous pouvez obtenir un curseur de
ifindfluent code> avec
Toicursorasync code>.
ou peut-être un peu plus élégant:
er ne renvoie pas le résultat avant que l'opération ASYNC ne termine même?