我用pymongo查询mongodb以获得日期范围时间戳内的结果。
我的查询如下:
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
我不明白mongo是如何实现这一目标的。 mongo缓存了一些结果吗?