请知道我如何过滤这个示例dynamodb表,以仅返回至少一个字段"old"或";new"数组不是空的,在下面的示例表中,它应该返回id为"2"的项。和"3"。
表:字段名= item
[
{
id: "1",
product: {"new": [], "old": []},
},
{
id: "2",
product: {"new": [{name: "a"}], "old": [name: "a"]},
},
{
id: "3",
product: {"new": [], "old": [name: "a"]},
},
]
我希望过滤器类似于:
FilterExpression: 'isTest = :boolean',
ExpressionAttributeValues: { ':boolean': isTest },
假设列表中的每个项目都是表中的单个项目,那么您可以使用Scan
和以下FilterExpression
实现您的用例:
aws dynamodb scan
--table-name <tablename>
--filter-expression 'size(#v.#o) > :num OR size(#v.#n) > :num'
--expression-attribute-names '{"#v": "product", "#o": "old", "#n":"new"}'
--expression-attribute-values '{":num":{"N":"0"}}'
使用size
过滤功能:
如果属性类型为List或Map,则size返回子元素的个数。示例:检查一星评论的数量是否超过了某一阈值。表达式属性值:v_sub是3的占位符。
size(ProductReviews.OneStar) > :v_sub