You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在查询DynamoDB时筛选嵌套数组对象字段?

DynamoDB数组嵌套字段筛选正确方法

你的DynamoDB条目结构

{ 
 "taxAmounts": [
  {
   "amount": {
    "currency": "AUD",
    "value": 209
   },
   "name": "GST"
  }
 ]
}

你尝试的错误命令

--filter-expression "contains (taxAmounts.#name, :gst)"
--expression-attribute-values '{"gst":{"M": { "name": {"S":  "GST"}}}}'
-expression-attribute-names '{"#name": "name"}'

错误原因

  1. 路径指向错误:taxAmounts.#name试图访问数组对象本身的name属性,而非数组内部每个元素的name字段,需要用taxAmounts[*].name遍历数组所有元素的对应属性。
  2. 属性值格式错误:无需嵌套M(Map)结构,直接传入字符串类型的S值即可,因为你要匹配的是字符串"GST"。

正确筛选命令

方法一:使用contains结合数组遍历路径

aws dynamodb scan \
  --table-name 你的表名称 \
  --filter-expression "contains(taxAmounts[*].name, :gst)" \
  --expression-attribute-values '{":gst": {"S": "GST"}}'

方法二:使用ANY语法(更直观)

aws dynamodb scan \
  --table-name 你的表名称 \
  --filter-expression "ANY taxAmounts.name = :gst" \
  --expression-attribute-values '{":gst": {"S": "GST"}}'

这两种方式都能筛选出taxAmounts数组中存在元素name为"GST"的条目。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:25:07