2014-01-28 1 views
1
MongoCollection<BsonDocument> collection = db.GetCollection("TestCollection"); 
MongoCursor<BsonDocument> cursor = collection.FindAll(); 
List<BsonDocument> list = cursor.toList(); 

Это очень медленное выполнение. MongoCursor преобразования в список очень медленно, но если я использую следующий код:Преобразование MongoCursor <BsonDocument> в список очень медленное

MongoCollection<T> collection = db.GetCollection<T>("TestCollection"); 
MongoCursor<T> cursor = collection.findAll(); 
List<T> entities = cursor.toList(); 

Приведенный выше код работает гораздо быстрее. Почему MongoCursor конвертирует в список так медленно? Я хочу использовать BsonDocument. Как я могу решить эту проблему?

+0

Вы уверены, что вы проверили, что на одном и том же количестве данных? также ... Что такое T в этом случае? – i3arnon

+0

Да Я уверен, что такая же коллекция используется. T является объектом данных сбора. – user3245613

+0

Я не могу воспроизвести это, различия во времени, которые я измерил в 6 000 документов, были статистически незначимыми. Вы уверены, что правильно измеряете? Как выглядит ваша тестовая установка? Насколько велика разница между ними? Как выглядит класс 'T'? – mnemosyn

ответ

1

Ошибка с драйвером 1.8.0 ~ 1.8.2. Мы сталкиваемся с тем же вопросом несколько дней назад и сообщается в MongoDb JIRA CSHARP-822. Предполагается, что для решения этой проблемы необходимо обновить до версии 1.8.3+.

+0

Спасибо. Загрузите мастер-ветвь на github и выполните сборку. Пробовал снова. Но это все еще медленно. Только один счетчик MongoCursor преобразуется в список занимает около 2000 milisecond. – user3245613

+0

Я не уверен, что он объединен с мастер-бранчем, для нас 1.8.3 разрешил проблему. Возможно, вам стоит попробовать с 1.8.3. – yaoxing

+0

Мой плохой. Просто взглянул на JIRA, и, похоже, он уже объединил его, чтобы овладеть веткой. Поэтому могут быть и другие причины. Насколько велика ваша коллекция? Я собираюсь пройти тест на месте. – yaoxing