2012-04-21 55 views
0

我正在Mongodb,我試圖做我的收藏索引,它只取-140到3320000之間的範圍,那麼總索引即將到來非常高,即23628640(通過使用db.Location.totalIndexSize()Mongodb ensureIndex

因此,我的查詢需要更多的時間來執行。

如何在(-180,180)之間進行索引?請幫助我

db.Location.ensureIndex({loc:"2d",type:1,clientId:1,background:true},{min:-140,max:3320000}) 
+0

你在問是否有部分索引的特徵(只索引某個範圍的值)?我想不是,即使有,B樹的工作方式也不會讓它變得更快(只是讓索引變小),所以我不認爲你的查詢花費的時間更長,只是因爲索引很大。 – Thilo 2012-04-23 00:00:49

+0

我不是要求部分索引,我問爲什麼我的索引範圍會很高,有什麼方法可以讓它在(-180,180)之間 – swati 2012-04-23 10:20:56

回答

0

我認爲你的語法錯了。你可能想:

db.Location.ensureIndex({loc:"2d",type:1,clientId:1}, {background:true}) 

最小值和最大值的選項都是可選的,默認爲-180和180你有沒有落在這個範圍之外的任何物體?看到你得到的錯誤和一個例子對象會很有幫助。

+0

我想向您展示我的代碼,可否請您給我gmail id謝謝 – swati 2012-04-23 18:32:20

+0

在我沒有指定範圍即{範圍:-140,最大:3320000},我得到的點不在間隔[-180.180]錯誤...請幫我出 – swati 2012-04-24 05:52:51

+0

你確定所有的你的數據在-180到180之間?我建議查詢該範圍以外的值。如果你有任何接近的值,我建議使用-181/181的範圍。 – mstearn 2012-05-02 23:19:38