我正在尝试使用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
请建议
答案 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的固有局限性, 所以明智地使用它!