最初,我指定了联系has_many服务的关系。因此,服务具有contact_id的外键:
class Contact
include Mongoid::Document
field :name, type: String
end
class Service
field :name, type: String
field :contact_id, type: Integer
end
现在可以向服务添加其他联系人,因此服务有很多联系人。但是,添加的联系人是已经独立存在的联系人。所以我不想将一个实体嵌入另一个实体。联系和服务将始终独立生活。没有嵌入。
那么我应该将联系人的ID存储在服务数组中吗?换句话说,我的新模型将如下所示:
class Contact
include Mongoid::Document
field :name, type: String
end
class Service
field :name, type: String
field :contact_id, type: Integer
field :contact_ids, type: Array, default: []
end
或者是否有更好的解决方案来解决这里的多对多问题(没有将一个文档嵌入另一个文档中)?
答案 0 :(得分:0)
对于多对多,您没有36个选项:您实际上有2个:
"双方"很酷的事情。解决方案是您可以从两个集合中找到查询文档以获取链接。
书籍和作者的例子:
db.books.findOne()
{
_id: 1,
title: "The Great Gatsby",
authors: [1, 5]
}
db.authors.findOne()
{
_id: 1,
firstName: "F. Scott",
lastName: "Fitzgerald",
books: [1, 3, 20]
}