2

我是 MongoDB 和 Mongoid 的新手,Mongoid 3.1.4用于我的 Rails ( 3.2.13) 应用程序。我在遗留代码中看到人们在引用模型中同时使用这两者type: Moped::BSON::ObjectIdtype: String某处。

例子

class Team
  include Mongoid::Document

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

  ...
end

(使用git blame我知道由 2 个不同的人写的这两行)

我进行了搜索,但没有找到何时/为什么使用什么类型的问题的答案?String或者Moped::BSON::ObjectId

谢谢,

4

1 回答 1

5

两者都有点奇怪,您通常会建立关系,而不是将 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 而不是字符串,但它会占用更少的存储空间。

于 2014-01-24T21:47:19.040 回答