Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Valores indefinidos

En esta guía, puede aprender a controlar cómo se serializa el controlador. undefined valores. Por defecto, el controlador serializa los valores undefined como valores null durante las operaciones de escritura.

Para que el controlador ignore los campos con undefined valores durante la serialización, configure el ignoreUndefined valor true en. Al especificar este valor, el controlador no serializa los campos con undefined valores.

El siguiente ejemplo inserta dos documentos. La primera operación de inserción tiene la configuración ignoreUndefined establecida en true, por lo que el driver no serializa el campo salesTax en esa operación. La segunda operación inserta un documento que tiene el campo salesTax con un valor null:

await myColl.insertOne(
{
state: "Montana",
salesTax: undefined,
},
{ ignoreUndefined: true }
);
await myColl.insertOne({
state: "New Hampshire",
salesTax: undefined,
});

Los documentos aparecen en la colección de la siguiente manera:

{
_id: ...,
state: "Montana",
},
{
_id: ...,
state: "New Hampshire",
salesTax: null
}

Puede especificar el ajuste ignoreUndefined en los siguientes niveles:

  • El nivel del cliente

  • El nivel de la base de datos

  • El nivel de la colección

  • El nivel de operación.

La configuración ignoreUndefined se aplica automáticamente al alcance de la instancia del objeto en la que la especificaste y a cualquier otro objeto creado a partir de esa instancia.

Por ejemplo, si configuras la ignoreUndefined opción al instanciar un objeto de base de datos, cualquier instancia de colección creada a partir de ese objeto heredará la configuración. Además, cualquier operación que llames en esa instancia de colección también hereda la configuración.

El siguiente ejemplo realiza una operación de búsqueda y actualización que hereda la configuración ignoreUndefined del objeto de base de datos myDB. Esta operación no produce ningún cambio en los datos porque el controlador ignora el campo gasTax.

const myDB = client.db("test", { ignoreUndefined: true });
// The collection inherits the ignoreUndefined setting
const myColl = myDB.collection("states");
// Any write operation will not serialize undefined values
await myColl.findOneAndUpdate(
{ state: "Georgia" },
{ $set: { gasTax: undefined } }
);

Puedes especificar el ajuste de ignoreUndefined nuevamente en cualquier nivel para anular cualquier ajuste heredado.

Por ejemplo, si estableces ignoreUndefined en true en tu objeto de colección, puedes anular la configuración en operaciones de escritura individuales que ejecutes en esa colección.

const myColl = myDB.collection("states", { ignoreUndefined: true });
// The insert operation will not serialize undefined values
await myColl.insertOne({
state: "South Dakota",
capitalGainsTax: undefined,
});
// The insert operation will serialize undefined values
await myColl.insertOne(
{ state: "Texas", capitalGainsTax: undefined },
{ ignoreUndefined: false }
);

Volver

BSON

En esta página