J'ai une application qui interroge les données d'un MongoDB en utilisant le pilote MongoDB C# quelque chose comme ceci:Comment récupérer des documents par lots avec mongoDB?
public void main()
{
foreach (int i in listOfKey)
{
list.add(getObjectfromDB(i);
}
}
public myObject getObjFromDb(int primaryKey)
{
document query = new document();
query["primKey"] = primaryKey;
document result= mongo["myDatabase"]["myCollection"].findOne(query);
return parseObject(result);
}
Sur ma machine locale (développement) pour obtenir 100 objets de cette façon prend moins d'une seconde. Cependant, j'ai récemment déplacé la base de données à un serveur sur Internet, et cette requête prend environ 30 secondes à exécuter pour le même nombre d'objet.
En outre, en regardant le journal mongoDB, il semble ouvrir environ 8-10 connexions à la base de données pour effectuer cette requête. Donc, ce que je voudrais faire est d'avoir la requête de la base de données pour un tableau de primaryKeys et de les récupérer tous en même temps, puis faire l'analyse dans une boucle après, en utilisant une connexion si possible.
Comment puis-je optimiser ma requête pour ce faire?
Merci,
--Michael
Ce n'est pas tout à fait exact $ ou contient un tableau de critères (expressions) et non de valeurs. –