我正在使用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执行此操作?
非常感谢
答案 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_values
和filter_expression
。