2012-09-11 50 views
1
db.tablebusiness.find({ "LongitudeLatitude" : { "$nearSphere" : [106.772835, -6.186753], "$maxDistance" : 0.053980478460939611 }, "Prominent" : { "$gte" : 15 }, "indexContents" : { "$all" : [/^soto/, /^nasi/] } }).limit(200).explain(); 




{ 
     "cursor" : "GeoSearchCursor", 
     "nscanned" : 48, 
     **"nscannedObjects" : 48,** 
     "n" : 48, 
     "millis" : 8563, 
     "nYields" : 0, 
     "nChunkSkips" : 0, 
     "isMultiKey" : false, 
     "indexOnly" : false, 
     "indexBounds" : { 
     } 
} 
> 

那麼索引的名稱是什麼?我看到了一些索引名稱顯示出來的問題。看看這裏MongoDB: why doesn't sorting by multiple keys use an index?例如爲什麼我看不到mongodb使用的索引名稱?

我還聽說,這根本就不是在這裏記錄的解釋(真)的地方的:

http://www.mongodb.org/display/DOCS/Explain

+0

請注意,http://www.mongodb.org/display/DOCS/Geospatial+Indexing表示每個集合只能有1個地理空間索引。這意味着「GeoSearchCursor」必須使用該索引。 –

+0

等一下。如果我們有時想要搜索按突出顯示和後者排序的點,則希望根據標題搜索點。我們需要2個地理空間索引,每個索引都屬於兩種不同的組合。 –

回答

2

我不確定它是否有意或有缺陷,但是當使用地理空間索引所使用的索引的名稱未在解釋計劃中顯示。

只有使用BtreeCursor時,纔是索引名稱show。

如上面評論所述,集合上只能有一個地理空間索引。在這個參數下,你可以假設如果光標是「GeoSearchCursor」,它就使用你想要的這個集合的索引。