我正在使用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"
}
}
})
但是我收到此错误:一个或多个参数值无效:包含比较运算符的参数数量无效
如何使用发电机数据库执行此操作?
多谢
试试这个,让我知道它是否有效,我从经验中知道 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
.