Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Establecer campos de clave de partición faltantes

Los campos de clave de partición que faltan caen dentro del mismo rango de partición que las claves de partición con valores nulos. Por ejemplo, si la clave de partición está en los campos { x: 1, y: 1 }, entonces:

Documento sin clave de partición
Cae en el mismo rango que

{ x: "hello" }

{ x: "hello", y: null }

{ y: "goodbye" }

{ x: null, y: "goodbye" }

{ z: "oops" }

{ x: null, y: null }

Para dirigirse a documentos con campos de clave de partición faltantes, se puede utilizar la condición de filtro { $exists: false } en los campos de clave de partición. Por ejemplo, si la clave de partición está en los campos { x: 1, y: 1 }, se pueden encontrar los documentos con campos de clave de partición faltantes ejecutando esta query:

db.shardedcollection.find( { $or: [ { x: { $exists: false } }, { y: { $exists: false } } ] } )

Si se especifica una condición de filtro de coincidencia exacta nula (p. ej. { x: null }), el filtro coincide tanto con aquellos documentos que tienen campos de clave de partición faltantes como con aquellos que tienen campos de clave de partición establecidos en null.

Algunas operaciones de escritura, como una escritura con una especificación de upsert, requieren una coincidencia exacta en la clave de fragmentación. En esos casos, para dirigirse a un documento que carece de la clave de fragmentación, incluya otra condición de filtro además de la coincidencia exacta null. Por ejemplo:

{ _id: <value>, <shardkeyfield>: null } // _id of the document missing shard key

Si tienes campos de clave de partición faltantes, puedes establecer el campo de clave de partición en null. Si deseas establecer el campo de clave de partición faltante en un valor que no seanull, consulta Cambiar el valor de la clave de partición de un documento.

Para realizar la actualización, puede usar las siguientes operaciones en un mongos:

Comando
Método
Descripción

Actualizar con
multi: true

  • Se puede usar solo para establecer el valor clave faltante en null.

  • Se puede realizar dentro o fuera de una transacción.

  • Se puede realizar como una escritura reintentable o no.

  • Para requisitos adicionales, consulta el comando/método específico.

Actualizar con
multi: false

  • Se puede usar para establecer el valor de clave faltante en null o cualquier otro valor.

  • La actualización para establecer los campos clave de partición que faltan debe cumplir uno de los siguientes requisitos:

    • el filtro de la query contiene una condición de igualdad en la clave de partición completa en la query

    • el filtro de la query contiene una coincidencia exacta en _id

    • la actualización apunta a una única partición

  • Para establecerlo en un valor distinto denull, consulta Cambiar el valor de la clave de partición de un documento.

  • Para requisitos adicionales, consulta el comando/método específico.

  • Se puede usar para establecer el valor de clave faltante en null o cualquier otro valor.

  • Al establecer campos de clave de partición faltantes con un método que explícitamente actualiza solo un documento, la actualización debe cumplir con uno de los siguientes requisitos:

    • el filtro de la query contiene una condición de igualdad en la clave de partición completa en la query

    • el filtro de la query contiene una coincidencia exacta en _id

    • la actualización apunta a una única partición

  • Se devuelven valores clave faltantes cuando se realiza la coincidencia en null. Para evitar actualizar un valor clave que sea null, incluya condiciones de query adicionales según corresponda.

  • Para establecerlo en un valor distinto denull, consulta Cambiar el valor de la clave de partición de un documento.

  • Para requisitos adicionales, consulta el comando/método específico.

  • Para establecer un valor a null, puedes especificar múltiples modificaciones de claves shard en la operación masiva.

  • Al establecer campos de clave de partición faltantes con un método que explícitamente actualiza solo un documento, la actualización debe cumplir con uno de los siguientes requisitos:

    • el filtro de la query contiene una condición de igualdad en la clave de partición completa en la query

    • el filtro de la query contiene una coincidencia exacta en _id

    • la actualización apunta a una única partición

  • Para establecerlo en un valor distinto denull, consulta Cambiar el valor de la clave de partición de un documento.

  • Para requisitos adicionales, consulte el comando/método subyacente.

Considera una colección de sales que esté particionada por el campo location. Algunos documentos de la colección no tienen el campo location. Un campo ausente se considera igual que un valor nulo para el campo. Para establecer explícitamente estos campos en null, ejecuta el siguiente comando:

db.sales.updateOne(
{ _id: 12345, location: null },
{ $set: { location: null } }
)

Al establecer campos de clave de partición faltantes con db.collection.updateOne() u otro método que actualice explícitamente solo un documento, la actualización debe cumplir uno de los siguientes requisitos:

  • el filtro de la query contiene una condición de igualdad en la clave de partición completa en la query

  • el filtro de la query contiene una coincidencia exacta en _id

  • la actualización está dirigida a una única partición