很酷,欢迎来到MongoDB!这很难得到正确的结果,取决于你的应用程序,但我会尝试给你一些基于你写的和我认为最好的指针。
这并非总是如此,但一般理论是,如果一个对象总是在另一个对象的上下文中被操纵和查看,那么应该将其嵌入到该对象中。这可能是在您的应用程序中发表评论和帖子的情况。因此,您可能希望在帖子中嵌入评论。
但是,因为您在多种环境中使用的标记物我会让自己收藏的是这样的:
class Tag
include Mongoid::Document
field :tag, type: String
field :type, type: String
field :count, type: Integer
end
让我们运行下来您的要求和构建模型。
标签应该有名称,类型以及使用次数。
通过上述代码完成Tag类的完成。
用户,帖子和评论应该能够有多个标签。
好吧,让我们给每个这些类一个“标签”字段,它有一个标签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
此外,我们将在帖子内嵌入注释,同时拥有像我们为用户所做的标签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
有意义吗?目前有一些建模Rails的关系,这些种种,但使用mongomapper代替mongoid(所以不要注重语法,但要注意提出的想法)在你的答案
很好的细节,详细信息here +1 – Xorlev
谢谢!希望蒂姆能从中获得一些东西。 –
非常感谢您提供详细的解答!这正是我想要的。感觉这可能需要一些时间来解决“蒙戈的思维方式”。我发现自己一直在想它......再次感谢你,这对我有很大帮助! –