我不想使用_id
作爲主鍵,但想定義我自己的鍵。我如何使用mongoid給出以下mongo對象。如何使用Mongoid定義我自己的MongoDB文檔主鍵
class Product
include Mongoid::Document
end
我不想使用_id
作爲主鍵,但想定義我自己的鍵。我如何使用mongoid給出以下mongo對象。如何使用Mongoid定義我自己的MongoDB文檔主鍵
class Product
include Mongoid::Document
end
如果你想使用鍵與另一名作爲主鍵,那麼你不能做到這一點。每個文檔都必須有一個名爲_id
的密鑰,其中的值將是主鍵索引條目。這就是MongoDB的工作原理。
但是,_id
字段的值不一定是ObjectID。你可以有任何你喜歡的地方(數組,IIRC除外)。
Sergio Tulentsev說得對,_id不一定是ObjectID。
但是,恐怕Lynn Langit的回答可能會引起誤解。 'ObjectId(string)從指定的十六進制字符串中創建一個對象ID'是真的,但是這裏的字符串必須是有效的ObjectID。你不能從你有意義的字符串中創建一個ObjectID。
對,['_id'是MongoDB如何執行它](http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-The%5CidField),但它不一定是ObjectID(不知道Mongoid會用非ObjectID'_id'做什麼)。 –
Mongoid可以很好地處理非objectid ID。例如,我大部分時間都使用字符串。 –
如果您的數據具有唯一字段(或者您想創建一個字段),並且您不需要ObjectId的屬性,則可以使用您自己的值覆蓋默認ID,只需確保密鑰的唯一性。 – jbnunn