我有一個包含250K文檔的集合,我想找到最後一個插入了索引的特定屬性「siteid」。這是我正在使用的查詢。Mongodb查詢性能
db.getCollection('txnCollection').find({"siteid":"123456"}).limit(1).sort({"_id":-1})
如果有記錄,則很快找到它。如果沒有性能不夠快,大約0.8s。
但是,如果我運行查詢
db.getCollection('txnCollection').find({"siteid":"123456"}).limit(1)
的表現即使與SITEID沒有文檔123456
看來愚蠢,如果一個記錄返回到再運行此查詢的真快運行第二個查詢來獲取我想要的記錄 - 即。最後插入的一個,但我不能工作了做什麼都好
對於信息的一種方式,當我運行解釋,結果我得到的是
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "txn.txnCollection",
"indexFilterSet" : false,
"parsedQuery" : {
"siteid" : {
"$eq" : "123456"
}
},
"winningPlan" : {
"stage" : "SORT",
"sortPattern" : {
"_id" : -1
},
"limitAmount" : 1,
"inputStage" : {
"stage" : "KEEP_MUTATIONS",
"inputStage" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"siteid" : 1
},
"indexName" : "siteid_1",
"isMultiKey" : false,
"direction" : "forward",
"indexBounds" : {
"siteid" : [
"[\"123456\", \"123456\"]"
]
}
}
}
}
},
"rejectedPlans" : []
},
"serverInfo" : {
"host" : "XXXXX",
"port" : 27017,
"version" : "3.0.6",
"gitVersion" : "1ef45a23a4c5e3480ac919b28afcba3c615488f2"
},
"ok" : 1
}
我找不到問題,請編輯,以便您的問題明確 –
我在查詢或索引中做錯了什麼。有沒有辦法找到即使不存在也能快速返回的最新記錄。 – user3782299
很顯然,79教授已經在試圖回答你了,所以他比我理解得更好,PLZ無視評論 –