如何在Rails 4中使用Dynamoid条件范围查询

时间:2017-04-19 06:01:37

标签: ruby-on-rails amazon-dynamodb

我正在尝试使用rails 4.2&amp ;;在我的应用程序中使用范围查询GT,LT,GTE。动力1.3。它导致零值。

的Gemfile

gem 'dynamoid', '1.3.0'
gem 'aws-sdk', '~> 2'

配置/初始化/ dynamoid.rb

Dynamoid.configure do |config|
  config.access_key = '******************'
  config.secret_key = '**********************'
  config.region = 'us-east-1'
  config.adapter = 'aws_sdk_v2' 
  config.namespace = '***********' 
  config.warn_on_scan = true 
  config.read_capacity = 200
  config.write_capacity = 100
end

我正在用于学生桌。下面是我的模型类

class Student
  include Dynamoid::Document
  table :name => :students

  field :first_name
  field :age, :integer
end

当我使用以下查询时,结果为<无效

Student.where(:"age.gt" => 2).all

请建议

1 个答案:

答案 0 :(得分:0)

仅当您有范围索引时,才能使用范围修饰符(gt,gte等)

来自docs: -

  

如果你有一个范围索引,Dynamoid提供了许多额外的索引   其他便利方法让您的生活更轻松:

     

User.where(“created_at.gt”=&gt; DateTime.now - 1.day).all   User.where(“created_at.lt”=&gt; DateTime.now - 1.day).all

     

它还支持.gte和.lte。把它们变成符号并允许一个   Rails SQL样式的字符串语法正在开发中。你只能有一个   每个查询的范围参数,因为DynamoDB的固有局限性,   所以明智地使用它!