Время выполнения в монго с разным количеством возвращаемых результатов одинаково - PullRequest
0 голосов
/ 24 мая 2018

Я запрашиваю mongodb с помощью pymongo, чтобы получить результаты в пределах временной отметки диапазона дат.

Мой запрос выглядит так:

start_TW = time.time()

startforTF = datetime(2016, 6, 1, 5, 0, 0).isoformat()
endforTF = datetime(2016, 6, 2, 5, 0, 0).isoformat()

pipeline=  [{"$match": {"properties.timestamp": {"$gte": startforTF, "$lte": endforTF}}},
            { "$project" : {"properties.vessel_hash":"$properties.vessel_hash", "geometry.coordinates":"$geometry.coordinates", "_id":0}}]

fetchPosOfShipInTimewindow = db.samplecol.aggregate(pipeline, allowDiskUse=True) 

end_TW = time.time()
print "Time to fetch all positions inside time frame: ", (end_TW - start_TW)

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

Для диапазона в один день результаты:

- время выполнения -> 0, 45

- записи, возвращенные из набора данных: 1.142.316

Для диапазона в десять дней получаются следующие результаты:

-время выполнения -> 0, 32

- записи, возвращенные из набора данных: 14.309.233

Я не понимаю, как Монго удается добиться этого.Монго кешировал некоторые результаты?

...