我的数据如下:
[
{
orgId: "ABC",
categories: [
"music",
"dance"
]
},
{
orgId: "XYZ",
categories: [
"math",
"science",
"art"
]
},
...
]
我在
orgId
上有主键,并希望使用DynamoDB的query
过滤和仅返回类别为"science"的项目,例如。(类别不需要成为任何索引的一部分:只要我可以在Dynamo内部进行查询,我愿意接受额外的工作负担。)
我很难让它正常工作。如果可以的话,我可以轻松地将
categories
更改为嵌套对象吗?但是在DynamoDB中,比较运算符非常有限,似乎无法按数组元素或嵌套对象进行过滤?
如果不行,这里有更好的方法吗?将每个类别转换为自己的第一级属性,例如:
[
{
orgId: "XYZ",
category_math: true,
category_science: true
}
]
当然不是吧?
Invalid FilterExpression: Syntax error; token: "CONTAINS"
。然而,它引导我找到了一个可行的解决方案(使用 DocumentClient SDK):{ ... QueryFilter: { categories: { ComparisonOperator: "CONTAINS", AttributeValueList: [myCategoryVariable], } ... }
。 - pjb