2014-05-22 42 views
0

我有一個像下面這樣的集合。我想索引「location」和「product_list.id」。 MongoDB似乎只允許文檔中的單個多鍵索引。任何可能的工作?地理空間索引與另一個多鍵索引...任何解決方案?

{ 
    "location":[62.99932,71.23424], 
    "product_list":[ 
     {"id":"wf2r34f34ff33", "price": "87.99"}, 
     {"id":"f334r3rff43ff", "price": "21.00"}, 
     {"id":"wf2r34f34ffef", "price": "87.99"}      
     ], 

    } 

回答

0

True,則只能在現場集合的單一化合物索引中的一個數組類型的索引,但你似乎是在談論「地理空間」查詢,這是東西有點不同。這完全沒有錯:

db.collection.ensureIndex({ "location": "2d", "product_list": 1 }) 

這是一個完全有效的複合索引形式。

所以它看起來像一個數組,但在這種情況下,MongoDB以不同的方式處理它。

+0

太棒了!謝謝尼爾!你能指出我對任何文檔或博客給出了相同的詳細解釋。我會試試這個。 – Joe

+0

像[this]這樣的文檔中有幾條語句(http://docs.mongodb.org/manual/reference/operator/query/near/#considerations)其中說,你不能將地理空間查詢與另一個特殊如文字。但在複合中添加另一個簡單密鑰沒有任何問題。因此,導致複合中的多鍵索引的東西不是問題。簡單的測試是索引創建不會導致錯誤,並且實際上可以在查詢中使用。例如,如果您嘗試了'location:1,product_list:1',則會出現錯誤。 –