Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Mongoid:检索所有嵌入的文档_Ruby_Mongodb_Mongoid - Fatal编程技术网

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负载上,两者都没有任何区别,因为它们将产生相同的查询,唯一的区别是第一个将创建比第二个多得多的对象。

在第二种情况下,照片将是
照片
散列
?第二种情况下,您将只有散列。