Ruby Mongoid:检索所有嵌入的文档
假设我们有这些模型:Ruby Mongoid:检索所有嵌入的文档,ruby,mongodb,mongoid,Ruby,Mongodb,Mongoid,假设我们有这些模型: class Person include Mongoid::Document embeds_many :albums end class Album include Mongoid::Document embeds_many :photos end class Photo include Mongoid::Document end 我想要的是检索特定人的所有照片。是否存在mongoid/mongodb快捷方式,或者唯一的方法是迭代person.
class Person
include Mongoid::Document
embeds_many :albums
end
class Album
include Mongoid::Document
embeds_many :photos
end
class Photo
include Mongoid::Document
end
我想要的是检索特定人的所有照片
。是否存在mongoid/mongodb快捷方式,或者唯一的方法是迭代person.albums
并将所有album.photos
存储在新数组中
谢谢。您有两种方法可以做到这一点,一种是通过Mongoid,它可以为所有对象充气。
比如:
Person.only("albums.photos").where(id: '1').albums.map(&:photos).flatten
或者你也可以用轻便摩托车(driver)来做,它只会返回一组照片
Person.collection.find(id: "1").select("albums.photos" => 1).
first["albums"].map { |a| a["photos"] }.flatten
在DB负载上,两者都没有任何区别,因为它们将产生相同的查询,唯一的区别是第一个将创建比第二个多得多的对象。在第二种情况下,照片将是照片
或散列
?第二种情况下,您将只有散列。