Je développe une application Web asp.net qui est censé servir des milliers d'images JPEG aux utilisateurs. Mon serveur dédié contient des fichiers JPEG et héberge un MongoDB pour stocker les métadonnées JPEG.MongoDB C# Pilote pour récupérer 5000 documents itérativement par curseur en utilisant AJAX
Sample object in a collection named **JPEG_123** (this collection has 1 million such documents and each document has _id indexed)
{
"_id" : "20121210185015000", //YYYYMMDDhhmmsslll
"Url" : "http:...",
"CameraId" : 123
}
J'utilise des méthodes Web pour interroger MongoDB. Je fais une recherche collection JPEG_123 pour le champ Utc avec des expressions régulières (par exemple, «^2012121018 * /) pour obtenir des documents pour une heure. Il retourne environ 5000 dossiers pointés par MongoCursor et MongoShell il ne montre que 3-4 fois milli secondes pour récupérer ces données.
Q. Comment
puis-je obtenir ces documents itérativement de MongoDB la meilleure façon et rapide dans ASP.NET grâce à MongoCursor? Avec une utilisation optimale de LIMIT, BATCHSIZE et NEXT comme attributs de MongoCursor. Je suis en train de faire quelque chose comme ceci:
- Execute ci-dessus sur la requête Trouver MongoDB de ASP.NET
- extraient que 500 premiers documents sur le réseau au départ et garder le repos 4500 dans la RAM
- Fetch 4500 documents de repos dans ce MongoCursor en 9 itérations ultérieures (chaque fois obtenir 500)
- OU toute autre possibilité d'accélérer ce processus d'envoi de ces données sur le réseau
Mes préoccupations
Lorsque j'interroge MongnoDB à partir d'ASP.NET, cela signifie-t-il vraiment que MongoDB charge tous les 5000 enregistrements en RAM mais ne renvoie pas tous les 5000 enregistrements à ASP.NET?
Après avoir émis la requête ci-dessus, elle retourne instantanément nombre total d'enregistrements pointés par les MongoCursor. Lorsque je parcours tous les documents dans MongoCursor, cela prend environ 20-30 secondes. Cela signifie-t-il que MongoDB renvoie des données lorsqu'il est utilisé dans l'application?