我在localhost上有一个包含10M +文档的大型MongoDB(3.4)集合。在按时间字段创建索引后,我可以非常快速地查询文档。不幸的是,在Python 2.7.10上运行的我的PyMongo驱动程序(3.2.2)耗时很长,在5分钟的窗口范围内,长度超过50倍。
Robomongo中的此查询以0.1秒运行:
var d1 = new Date('2016-08-06');
var d0 = new Date('2016-08-01');
db.getCollection('my_collection').find({'time': {$gte: d0, $lte: d1}}).limit(50000);
Python版本采用> 5分钟:
#Index created previously
#time_index = IndexModel([('time', DESCENDING)], name='time')
d0 = datetime.datetime(2016, 8, 1)
d1 = datetime.datetime(2016, 8, 6)
coll = db['my_collection']
doc_filter = {'time': {
'$gte': d0,
'$lte': d1,
}
}
doclist = [_document for _document in coll.find(doc_filter).limit(100)]
#doclist = [_document for _document in coll.find(doc_filter).hint('time').limit(100)]
hint()方法似乎也没有效果。 任何见解都将受到高度赞赏。谢谢!