Docs Home → MongoDB Manual
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:
db.sales.updateOne(
{ _id: 12345, location: null },
{ $set: { location: null } }
)
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