Я запрашиваю 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
Я не понимаю, как Монго удается добиться этого.Монго кешировал некоторые результаты?