感谢你的帮助。
我有一个包含这些统计数据的集合 我有 7 亿条看起来像这样的记录
db.flight_availabillity.findOne() {“_id”:ObjectId(“5226465fc3b53d4f249c19fc”),“flight_id”:9803,“到达”:1384819200,“持续时间”:1,“容量”:1,“房间”:1,“ min_price”:163,“min_price_packaged”:50,“rates_has_wifi”:1,“rates_has_baby_cot”:1,“rates_has_pets_allow”:1,“erank”:0.25 }
当我做查询时,我只在 4 个字段上做,所以我建立一个看起来像这样的索引 db.flight_availabillity.ensureIndex({"flight_id":1,"arrival":1,"duration":1,"capacity":1, “房间”:1})
问题:仅发送 1 个航班 id 时 find({"flight_id":{$in:[236]}) 结果很快
当使用多个航班 ID 时 find({"flight_id":{$in:[236,232,545,757]}) (并且我在查询中最多可以有 1000 个航班 ID)。我得到较慢的结果。
这是其中一个用时 3.5 秒的解释,但我也有几个用时 10 秒
db.flight_availability.find({"flight_id":{$in:[333,207731,33993,277,127,183345,169019,156473,92715,5046,2927,2473,2112,2024,281,264,185,125,95,80, 183074,31774,359,314,64010,56170,5107,4673,147,115571,214,101564,287,66356,128,194487,100,207984,66353]},"到达":1384387200,"持续时间":1, “容量”:1,“房间”:1}).explain(){“光标”:“BtreeCursor flight_id_1_arrival_1_departure_1_capacity_1_rooms_1 multi”,“isMultiKey”:false,“n”:40,“nscannedObjects”:240,“nscanned”: 358,“nscannedObjectsAllPlans”:597,“nscannedAllPlans”:715,“scanAndOrder”:假,“indexOnly”:假,“nYields”:0,“nChunkSkips”:0,“毫”:4,....}
我想念什么?如何查询并获得快速结果?
谢谢 !