Ruby on rails 使用ror加载MongoDB/Mongoid嵌入式文档
我有一个包含许多嵌入文档(数据点)(1:N关系)的文档(数据集)。因为它在rails中以数组的形式出现,例如,如果我想读取每个第20个元素,它会将每个元素加载到内存中,还是只加载每个第20个元素 我正在试图弄清楚这是否是低效的。理想情况下,我只想从数据库加载我需要的内容 以下是一个例子: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
a = DataSet.first
points = a.data_points.values_at(*(0..a.data_points.count).step(20))
这不好吗?是否有一种特定于mongoid的方法来实现这一点?嵌入的文档不是关系(以典型的RDBMS方式),而是实际嵌入到父记录中(因此命名),就像任何其他属性一样。因此,当您调用
DataSet.first
时,您正在将整个文档及其嵌入的记录加载到内存中
根据应用程序的结构,您可能会看到将每20个数据点
反规范化为一个单独的嵌入关系(在回调期间,或在后台任务中,或类似的情况下)的好处,然后在加载文档时,仅使用数据集加载这些点。仅(:datapoints\u sample).首先
-它将仅将该关系加载到内存中(而不加载其他属性)