我试图理解 mongoid 中的关系,但无法超越以下内容:
class Band
include Mongoid::Document
embeds_many :photos
end
class Photo
include Mongoid::Document
embedded_in :Band
end
在上面的代码中,指示Band embed_many phtos 应将完整的照片数据存储在Band 中。但是,需要将 embedded_in 放在 Photo 类中吗? Photo不放embedded_in,是不是自动多态了?
此外,查询 Photo.all
是否会获取嵌入在 Bands 中的照片?如果是,这是embedded_in的原因吗?我们可以为一个类设置多个 embedded_in 吗?
最佳答案
embedded_in
调用需要将方法添加到 Photo
类,以便您可以访问嵌入照片的 band。就像您使用 has_many
和 belongs_to
一样,尽管外键仅存储在具有 belongs_to
的对象中。它还添加了 methods to check if the Photo is persisted等等。是的,you can have multiple embedded_in
for one class .
Photo.all
不会为您提供嵌入在其他类中的照片。通常,如果您只通过另一个模型访问一个模型,您会嵌入它。当使用外键关系时,一次获取整个文档比再次往返数据库更便宜。因此,如果您需要类似 Photo.all
的内容,则不应嵌入 Photo
。
关于mongodb - embedded_in 在 mongoid 中的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595342/