2012-08-16 131 views
0

目前我有一個地理空間領域的指數設立這樣我的收藏之一:的MongoDB:地理空間索引和覆蓋索引查詢

collection.ensureIndex({ loc : "2d" }, { min : -10000 , max : 10000, 
    bits : 32, unique:true} 

不過,我想包括在指數一個多場,所以我可以在我的一個用例中利用covered index queries。具有多個字段(複合索引)的ensureIndex看起來是這樣的:

collection.ensureIndex({ username : 1, password : 1, roles : 1}); 

的問題是 - 我怎麼寫有附加字段我的第一個指數的規格,讓我把我的最小/最大參數?換句話說,如何指定min/max/bits只適用於其中一個索引字段?到目前爲止,我的最佳猜測是:

collection.ensureIndex({ loc : "2d", field2 : 1 }, 
    { min : -10000 , max : 10000 , bits : 32, unique:true} 

但是我沒有信心,這是正常的!

UPDATE:

有文檔here更多的信息,但它仍然沒有明確表示如何指定在這種情況下,最小/最大。

回答

0

db.collection.getIndexes()應該爲您提供用於構造索引的參數 - 最小/最大/位字段將只應用於「2d」字段。

除了getIndexes()之外,沒有辦法看到這些參數,但是您可以輕鬆驗證您是否被允許插入相同的位置/字段對,並且您不允許在區域外插入loc (但field2可以是任何東西)。位設置很難直接驗證,儘管您可以通過將其設置得非常低並且看到附近的點然後觸發唯一的密鑰違規來間接進行驗證。