2012-05-14 30 views

回答

1

從MongoDB的site

「在MongoDB的殼,的ObjectId()可以被用來創建的ObjectID的ObjectId(字符串)創建從指定十六進制字符串對象ID」

有一個代碼示例有作爲

3

如果你想使用鍵與另一名作爲主鍵,那麼你不能做到這一點。每個文檔都必須有一個名爲_id的密鑰,其中的值將是主鍵索引條目。這就是MongoDB的工作原理。

但是,_id字段的值不一定是ObjectID。你可以有任何你喜歡的地方(數組,IIRC除外)。

+0

對,['_id'是MongoDB如何執行它](http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-The%5CidField),但它不一定是ObjectID(不知道Mongoid會用非ObjectID'_id'做什麼)。 –

+0

Mongoid可以很好地處理非objectid ID。例如,我大部分時間都使用字符串。 –

+0

如果您的數據具有唯一字段(或者您想創建一個字段),並且您不需要ObjectId的屬性,則可以使用您自己的值覆蓋默認ID,只需確保密鑰的唯一性。 – jbnunn

1

Sergio Tulentsev說得對,_id不一定是ObjectID。

但是,恐怕Lynn Langit的回答可能會引起誤解。 'ObjectId(string)從指定的十六進制字符串中創建一個對象ID'是真的,但是這裏的字符串必須是有效的ObjectID。你不能從你有意義的字符串中創建一個ObjectID。

相關問題