DynamoDB使用rails包含数组中的值

时间:2016-07-12 18:49:59

标签: ruby-on-rails ruby amazon-dynamodb contains aws-sdk

我正在使用rails学习DynamoDB,我对此表示怀疑。 我无法在网上找到解决方案,所以如果你能解决它,我会感谢。

我怀疑的是如何在表格中找到保存在数组中的值,例如:

我在my_table中有很多数据,其中有一些名为“数字”的字段,如:

[1,2,3,4]
[3,4,5,6]
[1,3,4,7]
[4,7,8,10]
[8,9,12,14]
[12,14,16,20]

所以,我想要选择包含数字1,3,4的所有条目。在这种情况下有四个结果。

所以,我的代码是

result = dynamodb.scan({
    table_name: "my_table",
    select: "ALL_ATTRIBUTES",
    attributes_to_get: ["numbers"],
    scan_filter: {
        "numbers" => {
            attribute_value_list: [1,3,4],
            comparison_operator: "CONTAINS"
        }
    }
})

但是我收到此错误:一个或多个参数值无效:CONTAINS ComparisonOperator的参数数量无效

如何使用dynamo DB执行此操作?

非常感谢

1 个答案:

答案 0 :(得分:0)

试试这个并让我知道它是否有效,我从经验中知道DynamoDB过滤非常痛苦。

result = dynamodb.scan(
  table_name: 'my_table',
  expression_attribute_values: { 
    ':one' => 1,
    ':two' => 2,
    ':three' => 3,
    ':four' => 4
  },
  filter_expression: 'contains(numbers, :one) OR contains(numbers, :two) OR contains(numbers, :three) OR contains(numbers, :four)'
)

我目前无法想到任何更简单的方法,您关联的方法已标记为已弃用,而应使用expression_attribute_valuesfilter_expression