2013-06-24 26 views
1

我是MongoDB和Mongoid的新手,使用Mongoid 3.1.4作爲我的Rails(3.2.13)應用程序。我在舊版代碼中看到,在某處使用type: Moped::BSON::ObjectIdtype: String作爲參考模型。Moped :: BSON :: ObjectId或Rails模型中父級ID的字符串?

class Team 
    include Mongoid::Document 

    field :room_id, type: String 
    field :leader_id, type: Moped::BSON::ObjectId 

    ... 
end 

(使用git blame我知道這些2號線由2個不同的人寫的)

我做了搜索,但沒有發現對這個問題的答案時,/爲什麼要使用什麼類型? StringMoped::BSON::ObjectId

感謝,

回答

4

兩者都有點奇怪,你平時做的關係,而不是直接存儲的ID可以是字符串或的ObjectId:

class Team 
    include Mongoid::Document 

    belongs_to :room 
    belongs_to :leader 

    ... 
end 

這也將讓你可以直接通過調用room_id或leader_id來讀取ID。 欲瞭解更多信息請查看http://mongoid.org/en/mongoid/docs/relations.htmlhttp://two.mongoid.org/docs/relations.html

如果我不得不在兩者之間選擇,我存儲的ObjectId不是字符串的,雖然,它需要更少的存儲空間。

+2

存儲ObjectId還可以避免在查詢事物時出現亂七八糟的類型轉換廢話。 ObjectIds和字符串通常看起來相同,但它們不是;有時Mongoid會將字符串轉換爲ObjectIds給你,有時它不會。 –

相關問題