从导轨mongoid中查询大量键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从导轨mongoid中查询大量键相关的知识,希望对你有一定的参考价值。

我有一个在mongo上运行的Rails应用。我需要查询一个文档来执行大量计算。密钥列表很大,例如50多个。

我将在模型本身中编写计算方法。

由于键的数量巨大,如果我继续将键的值分配给局部变量并使用它们,则必须创建50个以上的局部变量。它看起来像如下:

def get_score
  record = Model.last
  a1 = record['k1'],
  a2 = record['k2'],
  a3 = record['k3'] 
  ##---so--on 50 plus keys
  #formulae. Where I will be using the a1...a50 variables to calculate.
end

这将使方法不必要地显得庞大,并且根本看起来效率不高。有没有一种方法可以将这些键添加到文件或哈希中,并映射并一次在模型上调用这些键?

答案

为了避免重复的哈希访问,您可以这样做:

hash={'a1'=>1,'a2'=>2}
eval (1..2).map { |i| "@a#{i} = hash['a#{i}'];" }.join

这给您@a1@a2

我不知道如何以编程方式创建局部变量。您可以写入binding,但不能写入本地范围。

以上是关于从导轨mongoid中查询大量键的主要内容,如果未能解决你的问题,请参考以下文章

Mongoid 按值或默认值查询

修改 rails mongoid 查询中的值

使用 Mongoid 和 Ruby 查询最近 30 天的日期范围?

Mongoid 不在查询中

结合两个查询的结果并按 created_at 排序? [导轨 3]

rails mongoid中的多键索引