Set Missing Shard Key Fields
If you have missing shard key fields, you can set the shard key field to
null. If you want to set the missing shard key field to a
non-null value, see Change a Document’s Shard Key Value.
To perform the update, you can use the following operations on a
mongos:
| Command |
Method |
Description |
|
|
|
- Can be used to set the missing key value to
null only.
- Can be performed inside or outside a transaction.
- Can be performed as a retryable write or not.
- For additional requirements, refer to the specific
command/method.
|
|
|
|
- Can be used to set the missing key value to
null or any
other value.
- The update to set missing shard key fields must meet one of
the following requirements:
- the filter of the query contains an equality condition on the full
shard key in the query
- the filter of the query contains an exact match on _id
- the update targets a single shard
- To set to a non-
null value, refer to
Change a Document’s Shard Key Value.
- For additional requirements, refer to the specific
command/method.
|
| findAndModify |
|
- Can be used to set the missing key value to
null or any
other value.
- When setting missing shard key fields with a method that
explicitly updates only one document, the update must meet
one of the following requirements:
- the filter of the query contains an equality condition on
the full shard key in the query
- the filter of the query contains an exact match on _id
- the update targets a single shard
- Missing key values are returned when matching on
null. To
avoid updating a key value that is null, include additional
query conditions as appropriate.
- To set to a non-
null value, refer to
Change a Document’s Shard Key Value.
- For additional requirements, refer to the specific
command/method.
|
| |
|
- To set to a
null value, you can specify multiple shard
key modifications in the bulk operation.
- When setting missing shard key fields with a method that
explicitly updates only one document, the update must meet
one of the following requirements:
- the filter of the query contains an equality condition on
the full shard key in the query
- the filter of the query contains an exact match on _id
- the update targets a single shard
- To set to a non-
null value, refer to
Change a Document’s Shard Key Value.
- For additional requirements, refer to the underlying
command/method.
|
Example
Consider a sales collection which is sharded on the location
field. Some documents in the collection have no location field. A
missing field is considered the same as a null value for the field. To
explicitly set these fields to null, run the following command:
When setting missing shard key fields with
db.collection.updateOne() or another method that explicitly
updates only one document, the update must meet one of the following
requirements:
- the filter of the query contains an equality condition on the full
shard key in the query
- the filter of the query contains an exact match on _id
- the update targets a single Shard