Как рассчитать время MongoQuery из C # - PullRequest
2 голосов
/ 22 августа 2011

Я пытаюсь синхронизировать запрос Монго в C # для столбца с индексом:

DateTime startTime = DateTime.Now;
MongoCollection<BsonDocument> voteCol = database.GetCollection<BsonDocument>("XXX");
var query = new QueryDocument("YYY", "23915");
MongoCursor<BsonDocument> cursor = voteCol.Find(query).SetSortOrder(SortBy.Descending("ZZZ")).SetLimit(10).SetSkip(20);
TimeSpan elapsedTime = DateTime.Now - startTime;
Console.WriteLine("Elapsed: {0}, in seconds: {1}, in milliseconds: {2} ", 
elapsedTime, elapsedTime.TotalSeconds, elapsedTime.TotalMilliseconds, cursor.Count());

Каждый раз, когда он равен 0, и я получаю результаты. Значит ли это, что это слишком быстро или я что-то пропустил?

Ответы [ 3 ]

4 голосов
/ 22 августа 2011

Это потому, что вы на самом деле не загружаете данные из mongodb. Данные будут загружены, когда вы начнете перебирать MongoCursor. Вы можете легко использовать ToList метод для загрузки данных из базы данных:

var data = voteCol.Find(query)
    .SetSortOrder(SortBy.Descending("ZZZ"))
    .SetLimit(10)
    .SetSkip(20)
    .ToList();

Также я предлагаю использовать Секундомер для оценки прошедшего времени.

0 голосов
/ 22 августа 2011

Как говорит Эндрю, Mongo на самом деле не выполняет запрос, пока вы не начнете выполнять итерацию по курсору, поэтому ваш запрос не выполняется.

Класс Stopwatch, вероятно, является лучшим способом определения времени.запрос из вашего приложения, но вы также можете сравнить свои запросы в базе данных, используя MongoDB Database Profiler .

0 голосов
/ 22 августа 2011

попробуй Секундомер

...