청크 범위 및 누락된 샤드 키 필드
누락된 샤드 키 필드는 null 값을 가진 샤드 키와 동일한 청크 범위 내에 속합니다. 예시 들어 샤드 키 { x:
1, y: 1 } 필드에 있는 경우 다음과 같습니다.
샤드 키가 누락된 문서 | 다음과 같은 범위에 속함 |
|---|---|
|
|
|
|
|
|
읽기/쓰기 작업 및 누락된 샤드 키 필드
샤드 키 필드가 누락된 문서를 대상으로 하려면 샤드 키 필드에 { $exists: false } 필터 조건을 사용할 수 있습니다. 예시 를 들어, 샤드 키 { x: 1, y: 1
} 필드에 있는 경우 다음 쿼리 실행 하여 샤드 키 필드가 누락된 문서를 찾을 수 있습니다.
db.shardedcollection.find( { $or: [ { x: { $exists: false } }, { y: { $exists: false } } ] } )
Null 동등성 매치 필터 조건을 지정하는 경우(예: { x: null
}), 필터는 샤드 키 필드가 누락된 문서 및 샤드 키 필드가 null로 설정된 문서를 모두 일치시킵니다.
upsert 사양의 쓰기와 같은 일부 쓰기 연산에는 샤드 키에 대한 동등성 매치가 요구됩니다. 이러한 경우 샤드 키가 누락된 문서를 대상으로 하려면 null 동등성 매치 외에도 다른 필터 조건을 포함합니다. 예시:
{ _id: <value>, <shardkeyfield>: null } // _id of the document missing shard key
누락된 샤드 키 필드 설정
샤드 키 필드가 누락된 경우 샤드 키 필드 를 null 으)로 설정하다 수 있습니다. If you want to set the missing shard key field to a non-null value, see Change a Document's Shard Key Value.
업데이트를 수행하려면 mongos에서 다음 작업을 사용할 수 있습니다.
명령 | 메서드 | 설명 |
|---|---|---|
update with multi: true |
| |
update with multi: false |
| |
| ||
|
예시
location 필드에 샤딩된 sales 컬렉션을 생각해 보세요. 컬렉션의 일부 문서에는 location 필드가 없습니다. 누락된 필드는 해당 필드의 null 값과 동일한 것으로 간주됩니다. 이러한 필드를 명시적으로 null로 설정하려면 다음 명령을 실행합니다.
db.sales.updateOne( { _id: 12345, location: null }, { $set: { location: null } } )
누락된 샤드 키 필드를 db.collection.updateOne() 또는 하나의 문서만 명시적으로 업데이트하는 메서드로 설정하는 경우, 업데이트는 반드시 다음 요구 사항 중 하나를 충족해야 합니다.
쿼리 필터에 쿼리의 전체 샤드 키에 대한 동등 조건이 포함되어 있음
쿼리 필터에 _id와 정확히 일치하는 항목이 포함되어 있습니다.
업데이트는 단일 샤드를 대상으로 합니다.