2013-08-26 51 views
0

我使用mongoid和rails 4.我有一個具有類型散列的'數據'字段的模型。該字段將存儲動態鍵值對。我知道我們可以將索引添加到靜態字段,但可以將索引添加到「數據」的關鍵字以及應該如何完成。使用動態鍵值向mongodb集合散列字段添加索引

+0

作爲一般指導,永久密鑰總是更好。我不會擁有帶動態密鑰的散列字段,而會總喜歡擁有一組哈希值。如果您需要索引並希望擁有更多可維護的代碼,那麼''{{key:dynamic_key1,value:value1},{key:dynamic_key2,value:value2}]'優於'{dynamic_key1:value1,dynamic_key2:value2} 。 – rubish

回答

0

您可以只添加你如果指數在一個充滿活力的領域都沒有, 像這樣以同樣的方式:

class Person 
    field :data, type: Hash 
    index('data.foo' => 1) 
end 

我非常肯定Mongoid不驗證,如果字段存在,所以您可以在模型上創建任何索引。另外,如果您沒有包含該字段的所有文檔,我還會將sparse選項添加到索引,因此您可以在內存中節省一些空間。

+0

在運行時,我該如何知道其中一個鍵是'foo'。 100個不同的用戶可能會發送100個不同的鍵值對。 –

+1

我明白了,所以如果你不知道密鑰,你將無法創建索引,這就是mongodb的設計。 –

+0

這可以通過使用'輪胎'寶石來進行elasticsearch嗎? –