mongodb - 大于两个字段之和的Mongoid

标签 mongodb mongoid

您好,我正在使用 mongoid (mongodb) 来实现大于标准:

Account.where(:field1.gt => 10)

但我想知道是否有可能做一个标准,其中两个字段的总和大于某个数字。也许是这样的(但似乎不起作用):

Account.where(:'field1 + field2'.gt => 10)

也许需要一些嵌入式 javascript?谢谢!

最佳答案

我建议使用 Piotr 所建议的 Mongoid 3 语法,但如果你想以一些存储开销为代价提高性能,你可以尝试这样的事情:

class Account
  # ...
  field :field1, :type => Integer
  field :field2, :type => Integer
  field :field3, :type => Integer, default -> { field1 + field2 }

  index({ field3: 1 }, { name: "field3" })

  before_save :update_field3

private

  def update_field3
    self.field3 = field1 + field2
  end

end

那么你的查询看起来更像:

Account.where(:field3.gte => 10)

注意在文档更改时更新 field3 的回调。还为其添加了索引。

关于mongodb - 大于两个字段之和的Mongoid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11982191/

相关文章:

ruby-on-rails - 无法使用 Mongoid 和 Geocoder 对嵌入式文档进行地理查询

ruby-on-rails - 类别 :Class Mongoid Nginx Passenger 的未定义方法 `mount_uploader'

ruby-on-rails-3 - Mongoid Embeds_many 不会保存在嵌套形式上

ruby-on-rails - 通过关联找到记录

javascript - 如何优化列表所有 Mongoose 查询?

python - beanie.exceptions.CollectionWasNotInitialized 错误

python - Django 中 isinstance() arg 2 必须是类型或类型元组错误

mongodb - 在索引字段与可尾光标上轮询 MongoDb

ruby-on-rails - mongoid,如何将结果与map/reduce合并

mongodb - mongo 和 mongod 之间的实际区别是什么?