28 PathNotViable: Cannot use the part of the path to traverse the element(パスの一部を使って要素をたどれない)
MongoDB意味
更新でドット区切りのフィールドパス (例: a.b.c) をたどろうとしたが、パスの一部がサブフィールドを持てない型 (スカラー値や誤った型の要素) に当たった。そのためパスをたどれなかった。
原因
ドキュメントのフィールド 'a' がオブジェクト/配列ではなくスカラー (例: 数値/文字列) であるのに a.b.c のようなネストしたパスに書き込んだ、または配列インデックスが想定される箇所にオブジェクトがあるなどの型の不一致。スキーマが一貫していないドキュメントで ($set で深いパスを更新する際に) よく見られる。
対処方法
更新前に、パスが想定される型 (オブジェクト/配列) であることを確認する。互換性のないドキュメントを修正するか、ドキュメント構造に応じて更新を条件付きにする。必要に応じて、まずフィールドを正しい型に変換し (例: スカラー値をオブジェクトに置き換える)、その後ネストしたフィールドを書き込む。スキーマの一貫性のためにスキーマ検証を検討する。
同じデータベースの他の項目
- 175 QueryPlanKilledQuery plan killed during execution(実行中に実行計画が強制終了された)
- 11602 InterruptedDueToReplStateChangeOperation interrupted due to a replication state change(レプリケーション状態の変化により操作が中断された)
- 136 CappedPositionLostCapped collection position lost(capped コレクションの位置を喪失)
- 216 ElectionInProgressElectionInProgress
- 225 TransactionTooOldTransactionTooOld
- 246 SnapshotUnavailableSnapshotUnavailable
- 257 TransactionTooLargeTransactionTooLarge