28 PathNotViable: Cannot use the part of the path to traverse the element (경로의 일부로 요소를 탐색할 수 없음)
MongoDB의미
업데이트가 점으로 구분된 필드 경로(예: a.b.c)를 탐색하려 했지만, 경로의 일부가 하위 필드를 가질 수 없는 타입(스칼라 값 또는 잘못된 타입의 요소)에 도달했다. 따라서 경로를 탐색할 수 없었다.
원인
문서의 필드 'a'가 객체/배열이 아닌 스칼라(예: 숫자/문자열)인데 a.b.c 같은 중첩 경로에 쓰려 하거나, 배열 인덱스가 예상되는 곳에서 객체를 발견하는 등 타입이 불일치하는 경우다. 스키마가 일관되지 않은 문서에서 흔하다($set으로 깊은 경로를 갱신할 때).
해결 방법
업데이트 전에 경로가 예상 타입(객체/배열)인지 확인한다. 호환되지 않는 문서를 수정하거나 문서 구조에 따라 조건부로 업데이트한다. 필요하면 먼저 필드를 올바른 타입으로 변환한 후(예: 스칼라 값을 객체로 교체) 중첩 필드를 쓴다. 스키마 일관성을 위해 schema validation을 고려한다.
같은 데이터베이스의 다른 항목
- 175 QueryPlanKilledQuery plan killed during execution
- 11602 InterruptedDueToReplStateChangeOperation interrupted due to a replication state change (복제 상태 변경으로 작업 중단)
- 136 CappedPositionLostCapped collection position lost
- 216 ElectionInProgressElectionInProgress
- 225 TransactionTooOldTransactionTooOld
- 246 SnapshotUnavailableSnapshotUnavailable
- 257 TransactionTooLargeTransactionTooLarge