2016-02-17 23 views
1

我在使用索引的mongo數據庫中編寫了一個查詢(查詢作爲排序部分)。如果我解釋查詢我得到:爲什麼mongo在提取之前不應用限制和跳過

"cursor" : "BtreeCursor state_1_lastModified_-1", 
"scanAndOrder" : false, 
"indexOnly" : false, 
"stats": 
"LIMIT" -> "SKIP" -> "FETCH" -> "IXSCAN" 

爲什麼不蒙哥能夠跳過並限制對指數的取過嗎? 我知道我可以使用範圍查詢來避免使用限制和跳過。

+0

沒有先取數據,就不難了解整個數據集,也沒有辦法跳過和限制 – zangw

回答

0

我認爲這只是爲了簡單。

假定db.collection具有下列文件

{x: 1, y: 1} 
{x: 2, y: 3} 
{x: 3, y: 4} 

QUERY1

db.collection.find()排序。({X:1})跳過(1).limit(2 )

階段鏈可以是IXSCAN ==> SKIP ==> FETCH ==> LIMIT

QUERY2

db.collection.find({X:2,Y:3})。排序({X:1})跳過(1).limit(2)

階段鏈必須是IXSCAN ==> FETCH ==> SKIP ==> LIMIT

所以爲了簡單起見,所有情況都可以用IXSCAN ==> FETCH ==> SKIP ==> LIMIT來實現。

相關問題