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
/ /

Global Modules

Todo Las funciones tienen acceso a módulos globales integrados que apoyan tareas comunes de transformación de datos, codificación y procesamiento. Puedes acceder a los módulos de tu código fuente de función mediante variables globales específicas de cada módulo.

Tip

Estos módulos globales no son los mismos que los módulos de funcionalidad incorporada de Node.js. Para obtener más información sobre los módulos compatibles de Node.js, incluyendo cómo importarlos, consulta Soporte de módulos incorporados.

Module
Descripción

Métodos para leer y guardar Tokens Web JSON.

Métodos que implementan algoritmos criptográficos como hash y firmas.

Métodos que convierten entre representaciones de cadenas y objetos de JSON data.

Métodos que convierten entre representaciones de string y objetos de datos JSON extendido.

Métodos que crean Binary JSON objetos y convierten entre varios tipos de datos BSON y codificaciones.

Puedes crear y leer JSON Web Tokens con la interfaz de utils.jwt.

Método
Descripción

Genera una JSON web token string codificada para un payload, signingMethod y secret dados.

Decodifica payload de una string de JSON Web Token.

Genera una cadena de token web JSON codificada para payload en función de signingMethod y secret especificados.

utils.jwt.encode(
signingMethod: string,
payload: object,
secret: string,
customHeaderFields: object
): string
Parameter
Tipo
Descripción

signingMethod

string

El algoritmo criptográfico a utilizar al codificar el JWT. Atlas es compatible con los siguientes métodos de firma JWT:

  • "HS256": HMAC usando SHA-256

  • "HS384": HMAC usando SHA-384

  • "HS512": HMAC usando SHA-512

  • "RS256": RSASSA-PKCS1-v1_5 usando SHA-256

  • "RS384": RSASSA-PKCS1-v1_5 usando SHA-384

  • "RS512": RSASSA-PKCS1-v1_5 usando SHA-512

  • "ES256": ECDSA utilizando P-256 y SHA-256

  • "ES384": ECDSA utilizando P-384 y SHA-384

  • "ES512": ECDSA utilizando P-512 y SHA-512

  • "PS256":RSASSA-PSS usando SHA-256 y MGF1 con SHA-256

  • "PS384":RSASSA-PSS usando SHA-384 y MGF1 con SHA-384

  • "PS512":RSASSA-PSS usando SHA-512 y MGF1 con SHA-512

payload

Objeto

Un objeto JSON que especifica las reclamaciones del token y cualquier dato adicional relacionado.

secret

string

Una string secreta que Atlas utiliza para firmar el token. El valor de la string depende del método de firma que utilices:

    • "HS256"Prueba, "HS384", y "HS512": una random string.

    • "RS256", "RS384", y "RS512": una clave privada RSA-SHA en formato PKCS#8.

    • "PS256", "PS384", y "PS512": Una clave privada RSA-PSS en formato PKCS#8.

customHeaderFields

Objeto

Un objeto JSON que especifica campos adicionales para incluir en el encabezado JOSE de JWT.

Retorna una string JSON Web Token codificada para el payload proporcionado.

Considere el siguiente objeto de claims JWT:

{
"sub": "1234567890",
"name": "Joe Example",
"iat": 1565721223187
}

Podemos codificar el objeto de reclamaciones como una cadena JWT llamando a utils.jwt.encode(). La siguiente función codifica el JWT utilizando el método de firma HS512 y el secreto "SuperSecret":

exports = function() {
const signingMethod = "HS512";
const payload = {
"sub": "1234567890",
"name": "Joe Example",
"iat": 1565721223187
};
const secret = "SuperSecret";
return utils.jwt.encode(signingMethod, payload, secret);
}
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"

Decodifica el payload de la string proporcionada del JSON Web Token. El valor de key debe coincidir con el valor secreto que se utilizó para codificar la string JWT.

utils.jwt.decode(
jwtString: string,
key: string,
returnHeader: boolean
): object
Parameter
Tipo
Descripción

jwtString

string

Una cadena de JSON Web Token que codifica un conjunto de claims firmados con un valor secreto.

key

string

Una string que Atlas utiliza para verificar la firma del token. El valor de la string depende del método de firma que utilices:

  • "HS256", "HS384", y "HS512": La string aleatoria que se usó para firmar el token.

  • "RS256", "RS384" y "RS512": La clave pública RSA-SHA que corresponde a la clave privada utilizada para firmar el token.

  • "PS256", "PS384" y "PS512": La clave pública RSA-SHA que corresponde a la clave privada utilizada para firmar el token.

  • "ES256", "ES384" y:"ES512" la clave pública ECDSA que corresponde a la clave privada que se utilizó para firmar el token.

returnHeader

booleano

Si true, devuelve el encabezado JOSE del JWT además de la carga útil decodificada.

acceptedSigningMethods

string[]

opcional. Arreglo de métodos de firma aceptados. Por ejemplo, ["PS256", "HS256"]. Este argumento debe incluirse para prevenir vulnerabilidades de seguridad JWT conocidas.

Si returnHeader es false, devuelve la carga de EJSON decodificada.

Si returnHeader es true, devuelve un objeto que contiene la cabecera JOSE en el campo header y la carga útil decodificada en formato EJSON en el campo payload.

{
"header": {
"<JOSE Header Field>": <JOSE Header Value>,
...
},
"payload": {
"<JWT Claim Field>": <JWT Claim Value>,
...
}
}

Considera la siguiente JWT firmada string:

"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"

El JWT se firmó utilizando el método de firma HS512 con el valor secreto "SuperSecret". Podemos decodificar el objeto de claims utils.jwt.decode() del JWT. La siguiente función decodifica la JWT string en un objeto EJSON:

exports = function(jwtString) {
const key = "SuperSecret";
return utils.jwt.decode(jwtString, key, false, ["HS512"]);
}
{
"sub": "1234567890",
"name": "Joe Example",
"iat": { "$numberDouble": 1565721223187 }
}

Puede cifrar, descifrar, firmar y verificar datos utilizando algoritmos criptográficos con la interfaz utils.crypto.

Método
Descripción

Genera una string cifrada a partir de una string dada usando un método de cifrado específico y una clave.

Descifra una string proporcionada utilizando un método de cifrado y una clave específicos.

Genera una firma criptográficamente única para un mensaje dado mediante una clave privada.

Verifica que una firma sea válida para un mensaje y clave pública especificados.

Genera un valor hash para una entrada y una función hash determinadas.

Genera un string de texto cifrado a partir del texto proporcionado utilizando el método de cifrado y la clave especificados.

utils.crypto.encrypt(
encryptionType: string,
message: string,
key: string
): BSON.Binary
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado con el que se cifrará el mensaje. Se admiten los siguientes tipos de cifrado:

message

string

La string de texto que deseas cifrar.

key

string

Una clave criptográfica utilizada para cifrar el texto. La llave que debes usar depende del método de cifrado:

  • AES: cadena aleatoria de 16bytes, 24bytes o 32bytes

Un BSON Binario objeto que contiene la string cifrada con el tipo de cifrado especificado y la clave.

Assume that we have defined a value named aesEncryptionKey that contains the following 32-byte AES encryption key:

"603082712271C525E087BD999A4E0738"

Con esta clave AES, podemos cifrar un mensaje en una string base64 utilizando la siguiente función:

exports = function() {
const message = "MongoDB is great!"
const key = context.values.get("aesEncryptionKey");
const encryptedMessage = utils.crypto.encrypt("aes", message, key);
return encryptedMessage.toBase64();
}
"WPBuIvJ6Bity43Uh822dW8QlVYVJaFUiDeUjlTiJXzptUuTYIKPlXekBQAJb"

Décrypte la string de texte fournie à l’aide du type de cifrado et de la clé spécifiés. Si tanto el tipo de cifrado como la clave son los mismos que se usaron para cifrar, esto devuelve el texto original, sin cifrar.

utils.crypto.decrypt(
encryptionType: string,
encryptedMessage: BSON.Binary,
key: string
): BSON.Binary
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado que se utilizó para cifrar el texto proporcionado. Se admiten los siguientes tipos de cifrado:

encryptedMessage

Un BSON binario que codifica la string de texto cifrada que deseas descifrar.

key

string

Una clave criptográfica utilizada para descifrar el texto. La clave que debe usar depende del tipo de cifrado:

  • AES: cadena aleatoria de 16bytes, 24bytes o 32bytes

Un objeto BSON Binario que contiene el mensaje descifrado.

Si el mensaje cifrado proporcionado se cifró con el método y clave especificados, entonces el mensaje descifrado es idéntico al mensaje original.

Supongamos que hemos definido un Value llamado aesEncryptionKey que contiene la siguiente llave de cifrado AES de 32bytes:

"603082712271C525E087BD999A4E0738"

Podemos usar esta clave AES para descifrar cualquier cadena base64 que haya sido cifrada con la misma clave utilizando la siguiente función:

exports = function(encryptedMessage) {
// The encrypted message must be a BSON.Binary
if(typeof encryptedMessage === "string") {
encryptedMessage = BSON.Binary.fromBase64(encryptedMessage)
}
const key = context.values.get("aesEncryptionKey");
const decryptedMessage = utils.crypto.decrypt("aes", encryptedMessage, key);
return decryptedMessage.text();
}
"MongoDB is great!"

Genera una firma criptográficamente única para un mensaje utilizando una clave privada. La firma puede ser verificada con la llave pública correspondiente para asegurar que el firmante tenga acceso a la llave privada y que el contenido del mensaje no haya sido alterado desde que fue firmado.

utils.crypto.sign(
encryptionType: string,
message: string,
privateKey: string,
signatureScheme: string
): BSON.Binary
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado que se utilizó para generar el par de claves privadas/públicas. Se admiten los siguientes tipos de cifrado:

message

string

La string que deseas firmar.

privateKey

string

Una clave privada generada con el tipo de cifrado especificado.

¡Importante! No todas las claves RSA usan el mismo formato. Atlas solo puede firmar mensajes con una llave privada que se ajuste al formato estándar PKCS#1. Las claves privadas en este formato tienen el encabezado -----BEGIN RSA PRIVATE KEY-----.

Puede utilizar el siguiente script de shell para generar un par de claves privadas/públicas RSA válido y guardar cada clave en su propio archivo de texto:

# Generate an RSA SSH key pair
# Save the key to a file called `rsa_key` when prompted
ssh-keygen -t rsa -m PEM -b 2048 -C "2048-bit RSA Key"
# Private Key
cat rsa_key > rsa.private.txt
# Public Key
ssh-keygen -f rsa_key.pub -e -m pem > rsa.public.txt

signatureScheme

string

Opcional. Por defecto: "pss"

El esquema de padding que la firma debe utilizar. Atlas admite la firma de mensajes con los siguientes esquemas:

Un BSON.Binary firma criptográfica para el mensaje firmado usando la llave privada especificada.

Supongamos que hemos definido un valor llamado rsaPrivateKey que contiene la siguiente llave privada RSA:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDVsEjse2qO4v3p8RM/q8Rqzloc1lee34yoYuKZ2cemuUu8Jpc7
KFO1+aJpXdbSPZNhGLdANn8f2oMIZ1R9hgEJRn/Qm/YyC4RPTGg55nzHqSlziNZJ
JAyEUyU7kx5+Kb6ktgojhk8ocZRkorM8FEylkrKzgSrfay0PcWHPsKlmeQIDAQAB
AoGAHlVK1L7kLmpMbuP4voYMeLjYE9XdVEEZf2GiFwLSE3mkJY44033y/Bb2lgxr
DScOf675fFUAEK59ATlhxfu6s6rgx+g9qQQ+mL74YZWPqiZHBPjyMRaBalDVC4QF
YJ+DopFcB8hY2ElXnbK70ALmVYNjw3RdmC97h0YfOsQcWW0CQQD18aeuPNicVnse
Ku22vvhvQYlabaQh4xdkEIxz1TthZj48f61wZwEMipYqOAc5XEtDlNnxgeipv0yF
RHstUjwXAkEA3m0Br/U/vC9evuXppWbONana08KLgfELyd3Uw9jG7VKJZTBH5mS8
7CB68aEF8egrJpo8Ss8BkWrvCxYDb4Y77wJAUlbOMZozVtvpKidrIFR9Lho91uWA
Hsw9h4W20AzibXBig7SnJ0uE4WMAdS/+0yhgFkceVCmO8E2YW8Gaj4jJjwJASxtg
AHy+ItuUEL4uIW4Pn8tVW0BMP3qX0niXyfI/ag/+2S5uePv3V3y4RzNqgH83Yved
+FziWKpVQdcTHeuj/QJBAJl1G3WFruk0llIoKKbKljaEiCm1WCTcuEPbdOtkJYvO
9ZYQg/fji70FERkq2KHtY7aLhCHzy0d4n9xgE/pjV+I=
-----END RSA PRIVATE KEY-----

Con esta clave RSA, podemos firmar un mensaje usando la siguiente función:

exports = function() {
const message = "MongoDB is great!"
const rsaPrivateKey = context.values.get("rsaPrivateKey");
const signature = utils.crypto.sign("rsa", message, rsaPrivateKey, "pss");
return signature.toBase64();
}
"SpfXcJwPbypArt+XuYQyuZqU52YCAY/sZj2kiuin2b6/RzyM4Ek3n3spOtqZJqxn1tfQavxIX4V+prbs74/pOaQkCLekl9Hoa1xOzSKcGoRd8U+n1+UBY3d3cyODGMpyr8Tim2HZAeLPE/D3Q36/K+jpgjvrJFXsJoAy5/PV7iEGV1fkzogmZtXWDcUUBBTTNPY4qZTzjNhL4RAFOc7Mfci+ojE/lLsNaumUVU1/Eky4vasmyjqunm+ULCcRmgWtGDMGHaQV4OXC2LMUe9GOqd3Q9ghCe0Vlhn25oTh8cXoGpd1Fr8wolNa//9dUqSM+QYDpZJXGLShX/Oa8mPwJZKDKHtqrS+2vE6S4dDWR7zKDza+DeovOeCih71QyuSYMXSz+WWGgfLzv/syhmUXP/mjqgLmJU6Kwg5htajDoylpzLC0BLGT4zDZEwBrq/AjwRs/EPjYdFgGCt1WCbbVlDyXvvH1ekDrzACzumhiMSZNNa+ZH3JmMJxTCQWDfiTeAfkauaaZHKIj2q2/QE7vuAhNcVPJ2YgpXnvnQHJpEZBc/Y3Q6JLxom6+cGC4P//9d++r2cwzXIkqD+wSGZVSVtpm5CLtWMRSK5FX2dv16bM+LE8ozoRvtMUDTrQ8SSSDGxyuYbvN9b2fYYPcWpCMchqOBXV6eZGoMldaHX3Qy5h8="

Verifica que la firma proporcionada sea válida para el mensaje y la clave pública especificados.

Si la firma es válida, garantiza que el firmante tiene acceso a la clave privada correspondiente y que el contenido del mensaje no ha sido alterado desde que fue firmado.

utils.crypto.verify(
encryptionType: string,
message: string,
publicKey: string,
signature: BSON.Binary,
signatureScheme: string
): boolean
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado que se utilizó para generar el par de claves privadas/públicas. Se admiten los siguientes tipos de cifrado:

message

string

La cadena de texto para la que desea verificar la firma. Si la firma es válida, este es exactamente el mensaje que fue firmado.

publicKey

string

La clave pública para la que se desea verificar la firma. Si la firma es válida, esta es la clave pública correspondiente a la clave privada que se usó para firmar el mensaje.

¡Importante! No todas las claves RSA usan el mismo formato. Atlas solo puede verificar firmas con claves RSA que cumplan con el formato estándar PKCS#.1 Las claves públicas en este formato tienen el -----BEGIN RSA PUBLIC KEY----- encabezado.

Puede utilizar el siguiente script de shell para generar un par de claves privadas/públicas RSA válido y guardar cada clave en su propio archivo de texto:

# Generate an RSA SSH key pair
# Save the key to a file called `rsa_key` when prompted
ssh-keygen -t rsa -m PEM -b 2048 -C "2048-bit RSA Key"
# Private Key
cat rsa_key > rsa.private.txt
# Public Key
ssh-keygen -f rsa_key.pub -e -m pem > rsa.public.txt

signature

La firma que desea verificar.

signatureScheme

string

Opcional. Por defecto: "pss"

El esquema de relleno que utiliza la firma. Atlas admite la verificación de firmas que utilizan los siguientes esquemas:

Un booleano que, si true, indica si la firma es válida o no para el mensaje y llave pública proporcionados.

Hemos recibido un mensaje con una firma en formato BSON.Binary y queremos verificar que el mensaje fue firmado con la clave privada que corresponde a la clave pública RSA del remitente:

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5
omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT
JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE=
-----END RSA PUBLIC KEY-----

Con esta clave RSA, podemos verificar un mensaje firmado con la llave privada correspondiente usando la siguiente función:

exports = function() {
const rsaPublicKey = context.values.get("rsaPublicKey");
const message = "MongoDB is great!"
const signature = BSON.Binary.fromBase64("SpfXcJwPbypArt+XuYQyuZqU52YCAY/sZj2kiuin2b6/RzyM4Ek3n3spOtqZJqxn1tfQavxIX4V+prbs74/pOaQkCLekl9Hoa1xOzSKcGoRd8U+n1+UBY3d3cyODGMpyr8Tim2HZAeLPE/D3Q36/K+jpgjvrJFXsJoAy5/PV7iEGV1fkzogmZtXWDcUUBBTTNPY4qZTzjNhL4RAFOc7Mfci+ojE/lLsNaumUVU1/Eky4vasmyjqunm+ULCcRmgWtGDMGHaQV4OXC2LMUe9GOqd3Q9ghCe0Vlhn25oTh8cXoGpd1Fr8wolNa//9dUqSM+QYDpZJXGLShX/Oa8mPwJZKDKHtqrS+2vE6S4dDWR7zKDza+DeovOeCih71QyuSYMXSz+WWGgfLzv/syhmUXP/mjqgLmJU6Kwg5htajDoylpzLC0BLGT4zDZEwBrq/AjwRs/EPjYdFgGCt1WCbbVlDyXvvH1ekDrzACzumhiMSZNNa+ZH3JmMJxTCQWDfiTeAfkauaaZHKIj2q2/QE7vuAhNcVPJ2YgpXnvnQHJpEZBc/Y3Q6JLxom6+cGC4P//9d++r2cwzXIkqD+wSGZVSVtpm5CLtWMRSK5FX2dv16bM+LE8ozoRvtMUDTrQ8SSSDGxyuYbvN9b2fYYPcWpCMchqOBXV6eZGoMldaHX3Qy5h8=")
const isValid = utils.crypto.verify("rsa", message, rsaPublicKey, signature, "pss");
return isValid; // true if the signature matches, else false
}
true

Genera un HMAC de la entrada y la clave secreta proporcionadas. Esto es útil al comunicarse con servicios HTTP de terceros que requieren solicitudes firmadas.

utils.crypto.hmac(
input: string,
secret: string,
hash_function: string,
output_format: string
): string
Parameter
Tipo
Descripción

input

string

La entrada para la que desea generar una firma.

secret

string

La clave secreta a utilizar al generar la firma.

hash_function

string

El nombre de la función de hash que se utilizará al generar la firma. Se admiten las siguientes funciones: "sha1", "sha256", "sha512".

output_format

string

El formato de la firma generada. Puede ser "hex" para una cadena hexadecimal o "base64" para una cadena Base64.

La firma de la entrada, en el formato especificado por output_format.

La siguiente función genera una firma sha256 como una cadena base 64:

exports = function() {
const signature = utils.crypto.hmac(
"hello!",
"super-secret",
"sha256",
"base64"
)
return signature
}
"SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="

Genera un valor de hash para la entrada proporcionada utilizando la función de hash especificada.

utils.crypto.hash(
hash_function: string,
input: string | BSON.Binary
): BSON.Binary
Parameter
Tipo
Descripción

hash_function

string

El nombre de la función de hash. Se admiten las siguientes funciones: "sha1", "sha256", "md5".

input

string o BSON.Binary

Obligatorio. La entrada para la que desea generar un valor hash.

Un objeto BSON.Binary que codifica el valor hash de la entrada proporcionada generada por la función hash especificada.

La siguiente función convierte una cadena de entrada en hash sha256:

exports = function() {
return utils.crypto.hash(
"sha256",
"hello!"
)
}
"zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="

El módulo global JSON proporciona métodos JSON para serializar y deserializar objetos estándar de JavaScript.

Método
Descripción

Analiza una string JSON serializada en un objeto de JavaScript.

Serializa un objeto JavaScript en una string JSON.

Analiza la string JSON proporcionada y la convierte en un objeto de JavaScript.

JSON.parse(jsonString: string): object
Parameter
Tipo
Descripción

jsonString

Una representación de cadena serializada de un objeto JSON estándar.

Un objeto estándar de JavaScript generado a partir del string JSON suministrado.

La siguiente función convierte una cadena JSON serializada a un objeto JavaScript equivalente:

exports = function() {
const jsonString = `{
"answer": 42,
"submittedAt": "2020-03-02T16:50:24.475Z"
}`;
return JSON.parse(jsonString);
}
{
"answer": 42,
"submittedAt": "2020-03-02T16:50:24.475Z"
}

Serializa el objeto JavaScript proporcionado en una string JSON.

JSON.stringify(json: object): string
Parameter
Tipo
Descripción

object

Una representación de cadena del objeto JavaScript proporcionado.

La siguiente función serializa un objeto JavaScript en una cadena JSON equivalente:

exports = function() {
const jsonObject = {
answer: 42,
submittedAt: new Date("2020-03-02T16:46:47.977Z")
};
return JSON.stringify(jsonObject);
}
"{\"answer\":42,\"submittedAt\":\"2020-03-02T16:46:47.977Z\"}"

El módulo global EJSON es similar a JSON pero conserva información adicional sobre los tipos de Extended JSON.

EJSON es un superconjunto del JSON estándar que agrega soporte adicional para tipos que están disponibles en BSON pero que no están incluidos en la especificación JSON.

Método
Descripción

Analizar una cadena JSON extendida serializada en un objeto JavaScript.

Serializar un objeto JavaScript en un string ExtendedJSON.

Analiza la cadena EJSON proporcionada y la convierte en un objeto JavaScript.

EJSON.parse(ejsonString: string): object
Parameter
Tipo
Descripción

ejsonString

string

Un string serializado que representa un objeto Extended JSON.

Una representación de objeto JavaScript de la string EJSON proporcionada.

La siguiente función convierte una string EJSON serializada en un objeto JavaScript equivalente:

exports = function() {
const ejsonString = `{
"answer": {
"$numberLong": "42"
},
"submittedAt": {
"$date": {
"$numberLong": "1583167607977"
}
}
}`;
return EJSON.parse(ejsonString);
}
{
"answer": {
"$numberLong": "42"
},
"submittedAt": {
"$date": {
"$numberLong": "1583167607977"
}
}
}

Serializa el objeto JavaScript proporcionado a una cadena EJSON.

EJSON.stringify(json: object): string
Parameter
Tipo
Descripción

object

Documento

Un objeto EJSON. El objeto puede contener tipos BSON.

Una representación de cadena del objeto EJSON proporcionado.

La siguiente función serializa un objeto JavaScript en una string EJSON equivalente:

exports = function() {
const jsonObject = {
answer: 42,
submittedAt: new Date("2020-03-02T16:46:47.977Z")
};
return EJSON.stringify(jsonObject);
}
"{\"answer\":{\"$numberLong\":\"42\"},\"submittedAt\":{\"$date\":{\"$numberLong\":\"1583167607977\"}}}"

El módulo global BSON permite crear objetos BSON tipados y convertirlos entre varios formatos y codificaciones de datos.

BSON, o JSON Binario, es el formato de datos que las bases de datos MongoDB utilizan internamente. Codifica una representación binaria de las estructuras de datos del documento utilizando un superconjunto de los tipos estándar de JSON. Para obtener más información, consulta la especificación BSON.

Tipo
Descripción

Representar un valor de ObjectId

Representa una expresión regular

Representar una estructura de datos binaria

Representa un valor que se compara con otros valores más altos que todos los demás

Representa un valor que se compara por debajo de todos los demás valores

Representa un entero con signo de 32 bits

Representa un entero con signo de 64 bits

Representa un número de punto flotante de 64 bits

Representa un número de punto flotante de 128 bits

El tipo BSON.ObjectId representa un identificador MongoDB ObjectId de 12 bytes.

Construye un BSON.ObjectId objeto que codifica un ObjectId

new BSON.ObjectId(id: string)
Parameter
Tipo
Descripción

id

string

Optional. A 12-byte string or a string of 24 hex characters.

Un BSON.ObjectId objeto que codifica la cadena ObjectId especificada o una ObjectId cadena generada si no se especificó ninguna.

const objectId = new BSON.ObjectId("5e58667d902d38559c802b13");
const generatedObjectId = new BSON.ObjectId();

El tipo BSON.BSONRegExp representa una expresión regular. Puede usar un BSON.BSONRegExp objeto con el $regex operador del query para realizar una query de expresión regular en una colección MongoDB.

Construye un objeto BSON.BSONRegExp a partir de una string de expresión regular. Puede especificar opcionalmente banderas de configuración.

BSON.BSONRegExp(pattern: string, flags: string)
Parameter
Tipo
Descripción

pattern

string

Un patrón de expresión regular.

flags

string

Un BSON.BSONRegExp objeto que codifica el patrón y las banderas de la expresión regular proporcionada.

const regex = BSON.BSONRegExp("the great", "ig");

El tipo BSON.Binary representa una string de datos codificada en binario.

Construye un objeto BSON.Binary a partir de datos representados como una cadena hexadecimal.

BSON.Binary.fromHex(
hexString: string,
subType?: number
): BSON.Binary
Parameter
Tipo
Descripción

hexString

string

Una alineación a bytes string de caracteres hexadecimales (0-9 y A-F).

subType

entero

opcional. El tipo de datos codificados en la string hexadecimal. El valor debe estar en el rango 0-255 donde 0, el valor por defecto, representa un valor binario genérico. Para obtener una lista completa de subtipos admitidos, consulta la especificación BSON.

Devuelve

Un objeto BSON.Binary que codifica la cadena hexadecimal proporcionada.

const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");

Convierte el objeto BSON.Binary en una cadena hexadecimal.

BSON.Binary.prototype.toHex(): string

Devuelve

Una representación de cadena hexadecimal del objeto BSON.Binary proporcionado.

export = function() {
const binary = BSON.Binary.fromHex(
"54657374206d65737361676520706c656173652069676e6f7265="
);
const hexString = binary.toHex();
return hexString
}
"54657374206d65737361676520706c656173652069676e6f7265="

Construye un objeto BSON.Binary a partir de datos representados como una cadena base64.

BSON.Binary.fromBase64(
base64String: string,
subType?: number
): BSON.Binary
Parameter
Tipo
Descripción

base64String

string

Una string de caracteres codificados en base64.

Nota: La string codificada en base64debe incluir uno o dos signos de igual (=), conocidos como "relleno", al final de la string. BSON.Binary.fromBase64() no admite cadenas sin relleno.

subType

entero

opcional. El tipo de datos codificados en la string hexadecimal. El valor debe estar en el rango 0-255 donde 0, el valor por defecto, representa un valor binario genérico. Para obtener una lista completa de subtipos admitidos, consulta la especificación BSON.

Devuelve

Un objeto BSON.Binary que codifica la string base64 proporcionada.

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");

Convierte un objeto BSON.Binary en una cadena base64.

BSON.Binary.prototype.toBase64(): string

Devuelve

Una representación de cadena base64 del objeto BSON.Binary.

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
const base64String = binary.toBase64();

Converts the BSON.Binary object into a UTF-8 string.

BSON.Binary.prototype.text(): string

Devuelve

Una representación de cadena UTF-8 del objeto BSON.Binary proporcionado.

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
const decodedString = binary.text();

El tipo BSON.MaxKey representa un valor que se compara como superior a todos los demás valores BSON.

await collection.findOne({ date: { $lt: BSON.MaxKey } });

El tipo BSON.MinKey representa un valor que se compara como inferior a todos los demás valores BSON.

await collection.findOne({ date: { $gt: BSON.MinKey } });

El tipo BSON.Int32 representa un entero con signo de 32 bits.

Construye un objeto BSON.Int32 a partir de un número de 32 bits.

BSON.Int32(low32: number): BSON.Int32
Parameter
Tipo
Descripción

low32

Número

Un número de 32 bits.

Un objeto BSON.Int32 que codifica el entero especificado. Devuelve 0 si no se suministran argumentos.

const int32 = BSON.Int32(42);

El tipo BSON.Long representa un entero con signo de 64 bits.

const long = BSON.Long(600206158, 342);
BSON.Long(low32: number, high32: number): BSON.Long

Constructs a BSON.Long object from two 32-bit integers that represent the low 32 bits and the high 32 bits in the 64-bit Long integer.

Parameter
Tipo
Descripción

low32

entero

Optional. The long integer's 32 low bits. These bits represent the least significant digits of the number.

high32

entero

Opcional. Los 32 bits más altos del número entero largo. Estos bits representan los dígitos más significativos del número.

Devuelve

Un objeto BSON.Long que codifica el entero especificado. Devuelve 0 si no se suministran argumentos.

BSON.Long codifica usando la siguiente fórmula:

(high32 * (2**32)) + low32

El tipo BSON.Double representa un número de punto flotante de 64bits (8bytes). Crea un objeto BSON.Double a partir de un valor decimal de 64bits.

Importante

Utilizar Decimal128 para Dinero

BSON.Double está sujeto a errores de redondeo en coma flotante, por lo que no se recomienda para casos de uso donde los valores decimales deban redondearse exactamente, por ejemplo, datos financieros. Para estos casos, use BSON.Decimal128 en su lugar.

BSON.Double(double: number): BSON.Double
Parameter
Tipo
Descripción

double

Número

Un valor decimal de 64 bits.

Un objeto BSON.Double que codifica el double especificado. Devuelve 0 si no se suministra ningún argumento.

const double = BSON.Double(1234.5678);

El tipo BSON.Decimal128 representa un número de punto flotante de 128 bits (16 bytes). Este tipo está destinado para casos de uso en donde los valores decimales deben redondearse exactamente, por ejemplo, datos financieros.

Construye un BSON.Decimal128 a partir de una representación de string de un número decimal.

BSON.Decimal128(decimalString: string): BSON.Decimal128
Parameter
Tipo
Descripción

decimalString

string

Una cadena que representa un número decimal, por ejemplo "1234.5678910123456".

Un BSON.Decimal128 que codifica el valor decimal proporcionado.

const double = BSON.Decimal128.fromString("1234.5678910123456");

Volver

Context