The document path provided in the update expression is invalid for update
요약 — 중첩 경로(SET parent.child = :v)에 쓰고 있지만 parent가 항목에 존재하지 않거나, map/list 대신 문자열/숫자로 존재합니다. DynamoDB는 중간 map을 자동 생성하지 않습니다. 부모를 먼저 만든 다음(이전 업데이트에서 SET #p = if_not_exists(#p, :emptyMap), 또는 항목 생성 시 {} 초기화) 중첩 속성을 설정하세요.
무엇을 의미하나요
ValidationException: The document path provided in the update expression
is invalid for update업데이트 표현식은 깊은 경로(stats.daily.views, items[3].qty)를 지정할 수 있지만, 경로의 마지막 을 제외한 모든 단계가 호환되는 타입으로 항목에 이미 존재해야 합니다. 항목에 stats 속성이 없거나 stats가 문자열이면 daily를 걸 곳이 없어 업데이트가 거부됩니다. 같은 검사가 트랜잭션 내부에서도 실행되며, 거기서는 ValidationError 취소 이유로 나타납니다.
왜 발생하나요
- 부모 map이 아직 존재하지 않음 — 항목이
stats없이 생성되었고, 이제SET stats.daily = :v에 내려갈stats가 없습니다. - 부모가 잘못된 타입으로 존재 —
stats가 map(M)이 아니라 문자열이나 숫자여서 지정할 멤버가 없습니다. - 존재하지 않는 list로 인덱싱 —
items가 항목에 없거나 list가 아닐 때SET items[0].qty = :q. - 오타가 있는 경로 세그먼트 —
SET stat.daily = :v(s누락)는 존재하지 않는 속성으로 내려갑니다. - 항목마다 형태가 다름 — 업데이트가 map을 지닌 항목에서는 작동하고 그렇지 않은 항목에서는 실패합니다(혼합 엔터티가 있는 단일 테이블 설계에서 흔함).
어떻게 고치나요
항목을 만들 때 부모 map을 초기화하세요 — 미리
stats: {}(빈M)를 쓰면 중첩 업데이트가 항상 착지할 곳이 있습니다.또는 필요할 때 부모를 만든 다음 자식을 설정하세요 — 두 번의 업데이트. DynamoDB는 이를 한 표현식에서 하도록 허용하지 않습니다(그건 경로 겹침입니다):
// update 1 — create the map only if it's missing UpdateExpression: 'SET #s = if_not_exists(#s, :empty)', ExpressionAttributeNames: {'#s': 'stats'}, ExpressionAttributeValues: {':empty': {}} // update 2 — now the nested set is safe UpdateExpression: 'SET #s.#d = :v', ExpressionAttributeNames: {'#s': 'stats', '#d': 'daily'}참고로
if_not_exists(stats.daily, :v)는 여기서 도움이 되지 않습니다 — 누락된 부모가 아니라 값 을 보호합니다.전체 형태를 소유한다면 대신 map 전체를 교체하세요:
SET #s = :wholeMap은stats가 존재했든 아니든 작동합니다.실제 항목 형태를 확인하세요 — 항목을 읽고 경로가 유효하다고 가정하기 전에 부모 속성이 존재하며
M/L인지 확인하세요.
DynoTable 데스크톱 앱은 모든 항목의 실제 중첩 구조를 한눈에 보여줍니다 — 쓰기 전에 stats가 map인지, 문자열인지, 아예 없는지 볼 수 있습니다.
관련 오류
- Two document paths overlap with each other — "부모 생성 + 자식 설정"이 하나의 표현식일 수 없는 이유.
- The provided expression refers to an attribute that does not exist
- Invalid UpdateExpression: Syntax error
- 학습: Update expressions · Data types
References
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Expression attribute names (aliases) in DynamoDB — Amazon DynamoDB Developer Guide
공식 AWS 문서(위 링크)를 기준으로 2026-07-13에 마지막으로 검증되었습니다.