У меня есть приложение, которое запрашивает данные из mongoDB с помощью драйвера mongoDB C # примерно так:
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);
}
На моей локальной (разрабатываемой) машине для получения 100 объектов таким способом требуется меньше секунды.Однако недавно я переместил базу данных на сервер в Интернете, и этот запрос занимает около 30 секунд для того же числа объектов.
Кроме того, просматривая журнал mongoDB, он открывает около 8-10 соединений с БД для выполнения этого запроса.
Итак, я хотел бы запросить базу данных для массива primaryKeys и получить их все сразу, а затем выполнить анализ в цикле впоследствии, используя одно соединение, если это возможно.
Как я могу оптимизировать свой запрос для этого?
Спасибо,
--Michael