Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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 on rails 使用ror加载MongoDB/Mongoid嵌入式文档_Ruby On Rails_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails 使用ror加载MongoDB/Mongoid嵌入式文档

Ruby on rails 使用ror加载MongoDB/Mongoid嵌入式文档,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我有一个包含许多嵌入文档(数据点)(1:N关系)的文档(数据集)。因为它在rails中以数组的形式出现,例如,如果我想读取每个第20个元素,它会将每个元素加载到内存中,还是只加载每个第20个元素 我正在试图弄清楚这是否是低效的。理想情况下,我只想从数据库加载我需要的内容 以下是一个例子: a = DataSet.first points = a.data_points.values_at(*(0..a.data_points.count).step(20)) 这不好吗?是否有一种特定于mong

我有一个包含许多嵌入文档(数据点)(1:N关系)的文档(数据集)。因为它在rails中以数组的形式出现,例如,如果我想读取每个第20个元素,它会将每个元素加载到内存中,还是只加载每个第20个元素

我正在试图弄清楚这是否是低效的。理想情况下,我只想从数据库加载我需要的内容

以下是一个例子:

a = DataSet.first
points = a.data_points.values_at(*(0..a.data_points.count).step(20))

这不好吗?是否有一种特定于mongoid的方法来实现这一点?

嵌入的文档不是关系(以典型的RDBMS方式),而是实际嵌入到父记录中(因此命名),就像任何其他属性一样。因此,当您调用
DataSet.first
时,您正在将整个文档及其嵌入的记录加载到内存中

根据应用程序的结构,您可能会看到将每20个
数据点
反规范化为一个单独的嵌入关系(在回调期间,或在后台任务中,或类似的情况下)的好处,然后在加载文档时,仅使用
数据集加载这些点。仅(:datapoints\u sample).首先
-它将仅将该关系加载到内存中(而不加载其他属性)