Global Modules
Nesta página
- Tokens da web JSON (
utils.jwt
) - utils.jwt.encode()
- utils.jwt.decode()
- Criptografia (
utils.crypto
) - utils.crypto.encrypt()
- utils.crypto.decrypt()
- utils.crypto.sign()
- utils.crypto.verify()
- utils.crypto.hmac()
- utils.crypto.hash()
- JSON (notação de objeto JavaScript)
- JSON.parse()
- JSON.stringify()
- EJSON (JSON estendido)
- EJSON.parse()
- EJSON.stringify()
- BSON (JSON binário)
- BSON.ObjectId
- BSON.BSONRegExp
- BSON.Binary
- BSON.MaxKey
- BSON.MinKey
- BSON.Int32
- BSON.Int32()
- BSON.Long
- BSON.Double
- BSON.Decimal128
Todas asfunções do têm acesso a módulos globais integrados que suportam trabalho comum de transformação, codificação e processamento de dados. Você pode acessar os módulos em seu código-fonte de função por meio de variáveis globais específicas para cada módulo.
Dica
Esses módulos globais não são iguais aos módulos integrados Node.js. Para obter mais informações sobre os módulos Node.js com suporte, incluindo como importá-los, consulte Suporte a módulos integrados.
Módulo | Descrição |
---|---|
Métodos para ler e gravar JSON web token. | |
Métodos que implementam algoritmos criptográficos como hashes
e assinaturas. | |
Métodos que convertem entre representações de string e objeto de JSON dados. | |
Métodos que convertem entre representações de string e objeto de dados JSON estendidos . | |
Métodos que criam JSON binário objetos e converter entre vários tipos de dados e codificações BSON. |
JSON Web Tokens (utils.jwt
)
Você pode criar e ler JSON web tokens com a utils.jwt
interface .
Método | Descrição |
---|---|
Gera uma string JSON web token codificada para um determinado payload , signingMethod e secret . | |
Decodifica o payload de uma string de JSON web token. |
utils.jwt.encode()
Gera uma string de JSON web token codificada para o payload
com base no signingMethod
e secret
especificados.
utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string
Parâmetro | Tipo | Descrição |
---|---|---|
signingMethod | string | O algoritmo criptográfico a ser usado ao codificar o JSON web token. O Atlas é compatível com os seguintes métodos de assinatura JSON web token :
|
payload | objeto | Um objeto JSON que especifica as reivindicações do token e quaisquer dados
adicionais relacionados. |
secret | string | Uma string secreta que o Atlas utiliza para assinar o token. O valor da string depende do método de assinatura que você usa:
|
customHeaderFields | objeto | Um JSON objeto que especifica campos adicionais a serem incluídos no cabeçalho JOSE do JSON web token. |
Devoluções
Retorna uma string de JSON web token codificada para o payload
fornecido.
Considere o seguinte objeto de declaração JSON web token:
{ "sub": "1234567890", "name": "Joe Example", "iat": 1565721223187 }
Podemos codificar o objeto de declarações como uma string JSON web token ligando para utils.jwt.encode()
. A função a seguir codifica o JSON web token usando o método de assinatura HS512
e o segredo "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"
utils.jwt.decode()
Decodifica o payload
da string de JSON web token fornecida. O valor de key
deve corresponder ao valor secreto que foi usado para codificar a string JSON web token.
utils.jwt.decode( jwtString: string, key: string, returnHeader: boolean ): object
Parâmetro | Tipo | Descrição |
---|---|---|
jwtString | string | Uma string de token da JSON da Web que codifica um conjunto de reivindicações assinado
com um valor secreto. |
key | string | Uma string que o Atlas utiliza para verificar a assinatura de token. O valor da string depende do método de assinatura que você usa:
|
returnHeader | booleano | Se true , retorne o cabeçalho JOSE do JSON web token além da carga útil descodificada. |
acceptedSigningMethods | string[] | Opcional. Array de métodos de assinatura aceitos. Por exemplo, ["PS256", "HS256"] . Esse argumento deve ser incluído para evitar vulnerabilidades de segurança JWT conhecidas. |
Devoluções
Se returnHeader
for false
, retorna a carga útil EJSON decodificada.
Se returnHeader
for true
, retorna um objeto que contém o cabeçalho JOSE no header
campo e a carga útil EJSON decodificada no payload
campo .
{ "header": { "<JOSE Header Field>": <JOSE Header Value>, ... }, "payload": { "<JWT Claim Field>": <JWT Claim Value>, ... } }
Considere a seguinte string JSON web token assinada:
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"
O JSON web token foi assinado usando o método de assinatura HS512
com o valor secreto "SuperSecret"
. Podemos decodificar o objeto de declarações do JWT utils.jwt.decode()
. A função a seguir decodifica a string JSON web token em um objeto EJSON:
exports = function(jwtString) { const key = "SuperSecret"; return utils.jwt.decode(jwtString, key, false, ["HS512"]); }
{ "sub": "1234567890", "name": "Joe Example", "iat": { "$numberDouble": 1565721223187 } }
Criptografia (utils.crypto
)
Você pode criptografar, descriptografar, assinar e verificar dados usando algoritmos criptográficos com a interface utils.crypto
.
Método | Descrição |
---|---|
Gera uma string de texto criptografada a partir de determinada string de texto usando
um método e uma chave de criptografia específicos. | |
Descriptografa uma sequência de texto fornecida usando um método e uma chave de criptografia específicos. | |
Gera uma assinatura criptograficamente exclusiva para uma determinada mensagem usando uma chave privada. | |
Verifica se uma assinatura é válida para determinada mensagem e chave
pública. | |
Gera um HMAC assinatura de uma determinada entrada e segredo. | |
Gera um valor de hash para uma determinada entrada e função de hash. |
utils.crypto.encrypt()
Gera uma string de texto criptografada a partir do texto fornecido usando o método e a chave de criptografia especificados.
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary
Parâmetro | Tipo | Descrição |
---|---|---|
encryptionType | string | O tipo de criptografia com o qual criptografar a mensagem. Os seguintes tipos de criptografia são aceitos:
|
message | string | A sequência de texto que você deseja criptografar. |
key | string | Uma chave criptográfica usada para criptografar o texto. A chave que você deve usar depende do método de criptografia:
|
Devoluções
Um objeto Binary BSON que contém a string de texto criptografada com o tipo de criptografia e chave especificados.
Suponha que definimos um valor chamado aesEncryptionKey
que contém a seguinte chave de criptografia AES de 32 bytes:
"603082712271C525E087BD999A4E0738"
Com esta chave AES, podemos criptografar uma mensagem em uma string base64 usando a seguinte função:
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"
utils.crypto.decrypt()
Descriptografa a string de texto fornecida usando a chave e o tipo de criptografia especificados. Se o tipo de criptografia e a chave forem iguais as usadas para criptografar, isso retorna o texto original, não criptografado.
utils.crypto.decrypt( encryptionType: string, encryptedMessage: BSON.Binary, key: string ): BSON.Binary
Parâmetro | Tipo | Descrição |
---|---|---|
encryptionType | string | O tipo de criptografia que foi usada para criptografar o texto fornecido. Os seguintes tipos de criptografia são aceitos:
|
encryptedMessage | Um binário BSON que codifica a string de texto criptografada
que você deseja descriptografar. | |
key | string | Uma chave criptográfica usada para descriptografar o texto. A chave que você deve usar depende do tipo de criptografia:
|
Devoluções
Um objeto Binary BSON que contém a mensagem descriptografada.
Se a mensagem criptografada fornecida foi criptografada com o método e a chave especificados, a mensagem descriptografada será idêntica à mensagem original.
Suponha que definimos um valor denominado aesEncryptionKey
que contém a seguinte chave de criptografia AES 32bytes :
"603082712271C525E087BD999A4E0738"
Podemos usar essa chave AES para descriptografar qualquer string base64 que foi criptografada com a mesma chave usando a seguinte função:
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!"
utils.crypto.sign()
Gera uma assinatura criptograficamente exclusiva para uma mensagem usando uma chave privada. A assinatura pode ser verificada com a chave pública correspondente para garantir que o assinante tenha acesso à chave privada e que o conteúdo da mensagem não tenha sido alterado desde que foi assinado.
utils.crypto.sign( encryptionType: string, message: string, privateKey: string, signatureScheme: string ): BSON.Binary
Parâmetro | Tipo | Descrição | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
encryptionType | string | O tipo de criptografia usado para gerar o par de chaves privada/pública. São aceitos os seguintes tipos de criptografia:
| ||||||||
message | string | A sequência de texto que você deseja assinar. | ||||||||
privateKey | string | Uma chave privada gerada com o tipo de criptografia especificado. Importante! Nem todas as chaves RSA usam o mesmo formato. O Atlas só pode assinar mensagens com uma chave privada que esteja em conformidade com o padrão PKCS#1 formato. As chaves privadas neste formato têm o cabeçalho Você pode usar o roteiro shell a seguir para gerar um par de chaves públicas/privadas RSA válido e salvar cada chave em seu próprio arquivo de texto:
| ||||||||
signatureScheme | string | Opcional. Padrão: O esquema de preenchimento que a assinatura deve usar. O Atlas aceita assinar mensagens com os seguintes esquemas:
|
Devoluções
Uma assinatura criptográfica BSON.Binary para a mensagem assinada usando a chave privada especificada.
Vamos supor que definimos um valor denominado rsaPrivateKey
que contém a seguinte chave 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-----
Com esta chave RSA, podemos assinar uma mensagem usando a seguinte função:
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="
utils.crypto.verify()
Verifica se a assinatura fornecida é válida para a mensagem e a chave pública especificadas.
Se a assinatura for válida, ela garante que o signatário tenha acesso à chave privada correspondente e que o conteúdo da mensagem não tenha sido alterado desde que foi assinado.
utils.crypto.verify( encryptionType: string, message: string, publicKey: string, signature: BSON.Binary, signatureScheme: string ): boolean
Parâmetro | Tipo | Descrição | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
encryptionType | string | O tipo de criptografia usado para gerar o par de chaves privada/pública. São aceitos os seguintes tipos de criptografia:
| ||||||||
message | string | A string cuja assinatura você deseja verificar. Se a assinatura for válida, esta é a mensagem exata que foi assinada. | ||||||||
publicKey | string | A chave pública cuja assinatura você deseja verificar. Se a assinatura for válida, esta é a chave pública correspondente da chave privada que foi utilizada para assinar a mensagem. Importante! Nem todas as chaves RSA usam o mesmo formato. O Atlas só pode verificar assinaturas com chaves RSA que estejam em conformidade com o padrão PKCS#1 formato. As chaves públicas neste formato têm o cabeçalho Você pode usar o roteiro shell a seguir para gerar um par de chaves públicas/privadas RSA válido e salvar cada chave em seu próprio arquivo de texto:
| ||||||||
signature | A assinatura que você deseja verificar. | |||||||||
signatureScheme | string | Opcional. Padrão: O esquema de preenchimento que a assinatura utiliza. O Atlas oferece suporte à verificação de assinaturas que usam os seguintes esquemas:
|
Devoluções
Um booleano que, se true
, indica se a assinatura é válida ou não para a mensagem fornecida e a chave pública.
Recebemos uma mensagem com uma assinatura no formato BSON.Binary e queremos verificar se a mensagem foi assinada com a chave privada que corresponde à chave pública RSA do emissor:
-----BEGIN RSA PUBLIC KEY----- MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5 omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE= -----END RSA PUBLIC KEY-----
Com esta chave RSA, podemos verificar uma mensagem assinada com a chave privada correspondente usando a seguinte função:
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
utils.crypto.hmac()
Gera um HMAC assinatura da entrada e segredo fornecidos. Isso é útil ao se comunicar com serviços HTTP de terceiros que exigem solicitações assinadas.
utils.crypto.hmac( input: string, secret: string, hash_function: string, output_format: string ): string
Parâmetro | Tipo | Descrição |
---|---|---|
input | string | A entrada para a qual você deseja gerar uma assinatura. |
secret | string | A chave secreta a ser usada ao gerar a assinatura. |
hash_function | string | O nome da função de hash a ser usada ao gerar a assinatura. As seguintes funções são suportadas: "sha1" , "sha256" , "sha512" . |
output_format | string | O formato da assinatura gerada. Pode ser "hex" para uma string hexadecimal ou "base64" para uma string Base64. |
Devoluções
A assinatura da entrada, no formato especificado por output_format
.
A seguinte função gera uma assinatura sha256 como uma string em base64:
exports = function() { const signature = utils.crypto.hmac( "hello!", "super-secret", "sha256", "base64" ) return signature }
"SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="
utils.crypto.hash()
Gera um valor de hash para a entrada fornecida usando a função de hash especificada.
utils.crypto.hash( hash_function: string, input: string | BSON.Binary ): BSON.Binary
Parâmetro | Tipo | Descrição |
---|---|---|
hash_function | string | O nome da função de hash. As seguintes funções são suportadas: "sha1" , "sha256" , "md5" . |
input | string ou BSON.Binary | Obrigatório. A entrada para a qual você gostaria de gerar um valor de hash. |
Devoluções
Um objeto BSON.Binary
que codifica o valor de hash para a entrada fornecida gerada pela função de hash especificada.
A função a seguir faz hash de uma string de entrada com sha256:
exports = function() { return utils.crypto.hash( "sha256", "hello!" ) }
"zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="
JSON (notação de objeto JavaScript)
O JSON
módulo global fornece métodos JSON para serializar e desserializar objetos JavaScript padrão.
Método | Descrição |
---|---|
Analise uma string JSON serializada em um objeto JavaScript. | |
Serialize um objeto JavaScript em uma string JSON. |
JSON.parse()
Analisa a string JSON fornecida e a converte em um objeto JavaScript.
JSON.parse(jsonString: string): object
Parâmetro | Tipo | Descrição |
---|---|---|
jsonString | Uma representação de string serializada de um objeto JSON padrão. |
Devoluções
Um objeto JavaScript padrão gerado a partir da string JSON fornecida.
A seguinte função converte uma string JSON serializada em um 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" }
JSON.stringify()
Serializa o objeto JavaScript fornecido para uma string JSON.
JSON.stringify(json: object): string
Parâmetro | Tipo | Descrição |
---|---|---|
object |
Devoluções
Uma representação de string do objeto JavaScript fornecido.
A função a seguir serializa um objeto JavaScript em uma string 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\"}"
EJSON (JSON estendido)
O módulo global EJSON
é semelhante ao JSON , mas preserva informações adicionais do tipo JSON estendido .
O EJSON é um superconjunto de JSON padrão que adiciona suporte adicional para tipos que estão disponíveis no BSON , mas não incluídos na especificação JSON.
Método | Descrição |
---|---|
Analise uma string JSON estendida serializada em um objeto JavaScript. | |
Serialize um objeto JavaScript em uma string ExtendedJSON. |
EJSON.parse()
Analisa a string EJSON fornecida e a converte em um objeto JavaScript.
EJSON.parse(ejsonString: string): object
Parâmetro | Tipo | Descrição |
---|---|---|
ejsonString | string | Uma representação de string serializada de um objeto JSON estendido. |
Devoluções
Uma representação de objeto JavaScript da string EJSON fornecida.
A função a seguir converte uma string EJSON serializada em um 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" } } }
EJSON.stringify()
Serializa o objeto JavaScript fornecido para uma string EJSON .
EJSON.stringify(json: object): string
Parâmetro | Tipo | Descrição |
---|---|---|
object | documento | Um objeto EJSON . O objeto pode conter BSON types. |
Devoluções
Uma representação de string do objeto EJSON fornecido.
A função a seguir serializa um objeto JavaScript em uma 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\"}}}"
BSON (JSON binário)
O módulo global do BSON
permite a você criar objetos BSON digitados e convertê-los entre vários formatos de dados e codificações.
BSON, ou Binary JSON, é o formato de dados usado internamente pelos bancos de dados MongoDB. Ele codifica uma representação binária de estruturas de dados de documentos usando um superconjunto de tipos JSON padrão. Para obter mais informações, consulte a especificação BSON.
Tipo | Descrição |
---|---|
Representar um valor ObjectId | |
Representar uma expressão regular | |
Representar uma estrutura de dados binária | |
Representar um valor que compara mais alto do que todos os outros valores | |
Representar um valor que se compara menor do que todos os outros valores | |
Representar um número inteiro assinado de 32 bits | |
Representar um número inteiro assinado de 64 bits | |
Representar um número de ponto flutuante de 64 bits | |
Representa um número de ponto flutuante de 128 bits |
BSON.ObjectId
O tipo BSON.ObjectId
representa um identificador MongoDB ObjectId
de 12 bytes.
Constrói um objeto BSON.ObjectId
que codifica um ObjectId
new BSON.ObjectId(id: string)
Parâmetro | Tipo | Descrição |
---|---|---|
id | string | Opcional. Uma string de 12 bytes ou uma string de 24 caracteres hexadecimais. |
Devoluções
Um objeto BSON.ObjectId
que codifica a string ObjectId especificada ou uma string ObjectId
gerada se nenhuma tiver sido especificada.
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
O BSON.BSONRegExp
tipo representa uma expressão regular. Você pode usar um objeto BSON.BSONRegExp
com o operador de query $regex
para executar uma query de expressão regular em uma collection do MongoDB.
Constrói um objeto BSON.BSONRegExp
a partir de uma string de expressão regular. Opcionalmente, você pode especificar sinalizadores de configuração.
BSON.BSONRegExp(pattern: string, flags: string)
Parâmetro | Tipo | Descrição |
---|---|---|
pattern | string | Uma expressão regular padrão. |
flags | string | Opcional. Um ou mais sinalizadores de expressão regular. |
Devoluções
Um objeto BSON.BSONRegExp
que codifica o padrão e os sinalizadores de expressão regular fornecidos.
const regex = BSON.BSONRegExp("the great", "ig");
BSON.Binary
O tipo BSON.Binary
representa uma string de dados com codificação binária.
BSON.Binary.fromHex()
Constrói um objeto BSON.Binary
a partir de dados representados como uma cadeia hexadecimal.
BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary
Parâmetro | Tipo | Descrição |
---|---|---|
hexString | string | Um byte alinhado string de caracteres hexadecimais (0-9 e At). |
subType | inteiro | Opcional. O tipo de dados codificado na string hexadecimal. O valor deve estar no intervalo 0-255 onde 0 , o valor padrão, representa um binário genérico. Para obter uma lista completa dos subtipos compatíveis, consulte a especificação BSON. |
Devoluções
Um objeto BSON.Binary
que codifica a string hexadecimal fornecida.
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()
Converte o objeto BSON.Binary
em uma string hexadecimal.
BSON.Binary.prototype.toHex(): string
Devoluções
Uma representação de string hexadecimal do objeto BSON.Binary
fornecido.
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString }
"54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()
Constrói um objeto BSON.Binary
a partir de dados representados como uma string base64.
BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary
Parâmetro | Tipo | Descrição |
---|---|---|
base64String | string | Uma sequência de caracteres codificados base64. Observação: a string codificada base64deve incluir um ou dois sinais de igual ( |
subType | inteiro | Opcional. O tipo de dados codificado na string hexadecimal. O valor deve estar no intervalo 0-255 onde 0 , o valor padrão, representa um binário genérico. Para obter uma lista completa dos subtipos compatíveis, consulte a especificação BSON. |
Devoluções
Um objeto BSON.Binary
que codifica a string base64 fornecida.
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase64()
Converte um objeto BSON.Binary
em uma string base64.
BSON.Binary.prototype.toBase64(): string
Devoluções
Uma representação de cadeia de caracteres base64 do objeto BSON.Binary
.
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const base64String = binary.toBase64();
BSON.Binary.prototype.text()
Converte o objeto BSON.Binary
em uma string UTF-8.
BSON.Binary.prototype.text(): string
Devoluções
Uma representação de string UTF-8 do objeto BSON.Binary
fornecido.
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const decodedString = binary.text();
BSON.MaxKey
O tipo BSON.MaxKey
representa um valor que compara mais alto do que todos os outros valores BSON.
await collection.findOne({ date: { $lt: BSON.MaxKey } });
BSON.MinKey
O tipo BSON.MinKey
representa um valor que compara menor do que todos os outros valores BSON.
await collection.findOne({ date: { $gt: BSON.MinKey } });
BSON.Int32
O tipo BSON.Int32
representa um número inteiro assinado de 32 bits.
BSON.Int32()
Constrói um objeto BSON.Int32
a partir de um número de 32 bits.
BSON.Int32(low32: number): BSON.Int32
Parâmetro | Tipo | Descrição |
---|---|---|
low32 | número | Um número de 32 bits. |
Devoluções
Um objeto BSON.Int32
que codifica o número inteiro especificado. Retorna 0
se nenhum argumento for fornecido.
const int32 = BSON.Int32(42);
BSON.Long
O tipo BSON.Long
representa um número inteiro assinado de 64 bits.
const long = BSON.Long(600206158, 342);
BSON.Long(baixo32, alto32)
BSON.Long(low32: number, high32: number): BSON.Long
Constrói um objeto BSON.Long
a partir de dois números inteiros de 32 bits que representam os 32 bits inferiores e os 32 bits superiores no número inteiro Long
de 64 bits.
Parâmetro | Tipo | Descrição |
---|---|---|
low32 | inteiro | Opcional. Os 32 bits inferiores do número inteiro longo. Esses bits representam os dígitos menos significativos do número. |
high32 | inteiro | Opcional. Os 32 bits superiores do número inteiro longo. Esses bits
representam os dígitos mais significativos do número. |
Devoluções
Um objeto BSON.Long
que codifica o número inteiro especificado. Retorna 0
se nenhum argumento for fornecido.
BSON.Long
codifica usando a seguinte fórmula:
(high32 * (2**32)) + low32
BSON.Double
O tipo BSON.Double
representa um número de ponto flutuante 64-bit (8-byte). Ele constrói um objeto BSON.Double
a partir de um valor decimal de 64bits.
Importante
Use Decimal128 para dinheiro
BSON.Double
está sujeito a erros de arredondamento de ponto flutuante, portanto, não é recomendado para casos de uso em que os valores decimais devem arredondar exatamente, por exemplo dados financeiros. Nesses casos, utilize BSON.Decimal128 .
BSON.Double(double: number): BSON.Double
Parâmetro | Tipo | Descrição |
---|---|---|
double | número | Um valor decimal de 64 bits. |
Devoluções
Um objeto BSON.Double
que codifica o duplo especificado. Retorna 0
se nenhum argumento for fornecido.
const double = BSON.Double(1234.5678);
BSON.Decimal128
O tipo BSON.Decimal128
representa um número de ponto flutuante de 128 bits (16 bytes). Esse tipo é destinado a casos de uso em que os valores decimais devem arredondar exatamente, por exemplo dados financeiros.
Constrói um BSON.Decimal128
a partir de uma representação de string de um número decimal.
BSON.Decimal128(decimalString: string): BSON.Decimal128
Parâmetro | Tipo | Descrição |
---|---|---|
decimalString | string | Uma string que representa um número decimal, por exemplo "1234.5678910123456" . |
Devoluções
Um BSON.Decimal128
que codifica o valor decimal fornecido.
const double = BSON.Decimal128.fromString("1234.5678910123456");