酷,欢迎来到 MongoDB!这很难做到正确,并且取决于您的应用程序,但我会尝试根据您编写的内容以及我认为最有效的内容为您提供一些指导。
情况并非总是如此,但一般理论是,如果始终在另一个对象的上下文中操作和查看一个对象,则应将其嵌入该对象中。 可能在您的应用程序中使用 cmets 和 post。因此,您可能希望在帖子中嵌入 cmets。
但是,因为您在多个上下文中使用标记对象,所以我会将其设为自己的集合,如下所示:
class Tag
include Mongoid::Document
field :tag, type: String
field :type, type: String
field :count, type: Integer
end
让我们满足您的需求并构建模型。
标签应该有名称、类型和使用次数。
通过上面的 Tag 类代码完成。
用户、帖子和 cmets 应该可以有多个标签。
好的,让我们给每个类一个“标签”字段,其中包含一个标签 ID 数组,这将是一个引用关系。
class User
include Mongoid::Document
field :first_name, type: String
field :last_name, type: String
field :email, type: String
field :tags, type: Array
end
此外,我们将在帖子中嵌入 cmets 以及我们为用户所做的标签 ID 数组。
class Post
include Mongoid::Document
field :subject, type: String
field :body, type: String
field :tags, type: Array
embeds_many :comments
end
class Comment
include Mongoid::Document
field :name, type: String
field :type, type: String
field :count, type: Integer
embedded_in :post
end
有意义吗? here 有更多关于在 Rails 中建模这类关系但使用 mongomapper 而不是 mongoid 的信息(所以不要注意语法,但要注意提出的想法)