Docs Menu

Set Missing Shard Key Fields

On this page

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
update with
multi: true
  • 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.

update with
multi: false
  • 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.

  • 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.

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

On this page