所有函数都可以访问支持常见数据转换、编码和处理工作的内置全局模块。 您可以通过每个模块特定的全局变量来访问函数源代码中的模块。
提示
这些全局模块与Node.js 内置模块不同。 有关受支持的 Node.js 模块的更多信息,包括如何导入这些模块,请参阅内置模块支持。
模块 | 说明 |
|---|---|
读取和写入 JSON Web 令牌的方法。 | |
实现哈希和签名等加密算法的方法。 | |
在 JSON 数据的字符串和对象表示形式之间进行转换的方法。 | |
Methods that convert between string and object representations of Extended JSON data. | |
创建二进制JSON对象并在各种BSON数据类型和编码之间进行转换的方法。 |
JSON Web Tokens (utils.jwt)
您可以使用 utils.jwt 接口创建和读取JSON Web 令牌。
方法 | 说明 |
|---|---|
为给定的 | |
解码 JSON Web Token 字符串的 |
utils.jwt.encode()
根据指定的signingMethod和secret为payload生成已编码的 JSON web token 字符串。
utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 对JSON web token进行编码时使用的加密算法。 Atlas支持以下JSON web token签名方法:
|
| 对象 | 一个 JSON 对象,用于指定令牌的声明和任何其他相关数据。 |
| 字符串 | 用于对令牌进行签名的密钥string Atlas。该string的值取决于您使用的签名方法:
|
| 对象 | 一个JSON对象,用于指定要包含在JSON web token 的 JOSE 标头 中的其他字段。 |
返回:
返回为提供的 payload 编码的JSON web token string 。
考虑以下 JSON web token 声明对象:
{ "sub": "1234567890", "name": "Joe Example", "iat": 1565721223187 }
我们可以通过调用utils.jwt.encode()将声明对象编码为 JSON web token 字符串。以下函数使用HS512签名方法和密钥"SuperSecret"对 JSON web token 进行编码:
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()
对提供的 JSON Web 令牌字符串的payload进行解码。 key的值必须与用于对 JWT 字符串进行编码的密钥值相对应。
utils.jwt.decode( jwtString: string, key: string, returnHeader: boolean ): object
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 一个 JSON web token字符串,用于对一组带有密钥值的已签名声明进行编码。 |
| 字符串 | stringAtlas用于验证令牌签名的 。该string的值取决于您使用的签名方法:
|
| 布尔 | 如果为 |
| string[] | 可选。已接受的签名方法的数组。例如, |
返回:
如果returnHeader为false ,则返回解码后的 EJSON 有效负载。
如果returnHeader 为true ,则返回一个对象,其中包含 字段中的 JOSE header标头和 字段中已解码的EJSON有效负载。payload
{ "header": { "<JOSE Header Field>": <JOSE Header Value>, ... }, "payload": { "<JWT Claim Field>": <JWT Claim Value>, ... } }
考虑以下签名的 JSON web token 字符串:
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"
该 JSON web token 是使用HS512签名方法并使用密钥值"SuperSecret"进行签名的。我们可以解码 JWT 的声明对象utils.jwt.decode() 。 以下函数将 JSON web token 字符串解码为 EJSON 对象:
exports = function(jwtString) { const key = "SuperSecret"; return utils.jwt.decode(jwtString, key, false, ["HS512"]); }
{ "sub": "1234567890", "name": "Joe Example", "iat": { "$numberDouble": 1565721223187 } }
密码学 (utils.crypto)
您可以通过utils.crypto接口使用加密算法对数据进行加密、解密、签名和验证。
方法 | 说明 |
|---|---|
使用特定的加密方法和密钥从给定的文本字符串生成加密的文本字符串。 | |
使用特定的加密方法和密钥对提供的文本字符串进行解密。 | |
使用私钥为给定的消息生成加密的唯一签名。 | |
验证签名对于给定消息和公钥是否有效。 | |
根据给定的输入和密钥生成 HMAC 签名。 | |
为给定的输入和哈希函数生成哈希值。 |
utils.crypto.encrypt()
使用指定的加密方法和密钥,从提供的文本中生成加密文本字符串。
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 用于加密消息的加密类型。支持以下加密类型:
|
| 字符串 | 要加密的文本字符串。 |
| 字符串 | 用于加密文本的加密密钥。您应使用的密钥取决于加密方法:
|
返回:
一个BSON二进制对象,其中包含使用指定加密类型和密钥加密的文本string 。
假设我们定义了一个名为aesEncryptionKey的值,其中包含以下 32 字节 AES 加密密钥:
"603082712271C525E087BD999A4E0738"
使用此 AES 密钥,我们可以使用以下函数将消息加密为 base64 字符串:
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()
使用指定的加密类型和密钥解密提供的文本字符串。如果加密类型和密钥与用于加密的类型和密钥相同,则返回原始的未加密文本。
utils.crypto.decrypt( encryptionType: string, encryptedMessage: BSON.Binary, key: string ): BSON.Binary
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 用于对提供的文本进行加密的加密类型。支持以下加密类型:
|
| 一个 BSON 二进制文件,用于对要解密的加密文本字符串进行编码。 | |
| 字符串 | 用于解密文本的加密密钥。您应使用的密钥取决于加密类型:
|
返回:
A BSON Binary object that contains the decrypted message.
如果提供的加密消息是使用指定的方法和密钥加密的,则解密的消息与原始消息相同。
假设我们定义了一个名为aesEncryptionKey的值,其中包含以下32字节 AES加密密钥:
"603082712271C525E087BD999A4E0738"
我们可以使用此 AES 密钥来解密任何使用相同密钥加密的 base64 字符串,方法是使用以下函数:
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()
使用私钥为消息生成唯一的加密签名。可以使用相应的公钥来验证签名,以确保签名者可以访问私钥,并且消息内容自签名以来没有更改。
utils.crypto.sign( encryptionType: string, message: string, privateKey: string, signatureScheme: string ): BSON.Binary
Parameter | 类型 | 说明 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 字符串 | 用于生成私钥/公钥对的加密类型。支持以下加密类型:
| ||||||||
| 字符串 | 要签名的文本字符串。 | ||||||||
| 字符串 | 使用指定加密类型生成的私钥。 重要提示!并非所有 RSA 密钥都使用相同的格式。Atlas只能使用符合标准PKCS#1格式的私钥对消息进行签名。这种格式的私钥具有标头 您可以使用以下 Shell 脚本生成有效的 RSA 私钥/公钥对并将每个密钥保存到其自己的文本文件中: | ||||||||
| 字符串 |
返回:
使用指定私钥签名的消息的BSON.Binary 加密签名。
假设我们定义了一个名为rsaPrivateKey的值,其中包含以下 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-----
使用此 RSA 密钥,我们可以使用以下函数对消息进行签名:
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()
检查提供的签名是否对指定的消息和公钥有效。
如果签名有效,则可以保证签名者可以访问相应的私钥,并且消息内容自签名以来没有更改过。
utils.crypto.verify( encryptionType: string, message: string, publicKey: string, signature: BSON.Binary, signatureScheme: string ): boolean
Parameter | 类型 | 说明 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 字符串 | 用于生成私钥/公钥对的加密类型。支持以下加密类型:
| ||||||||
| 字符串 | 要验证签名的文本字符串。如果签名有效,则这就是已签名的确切消息。 | ||||||||
| 字符串 | 要验证其签名的公钥。如果签名有效,则这是用于对消息进行签名的私钥的相应公钥。 重要提示!并非所有 RSA 密钥都使用相同的格式。Atlas只能使用符合标准PKCS#1格式的 RSA 密钥验证签名。这种格式的公钥具有标头 您可以使用以下 Shell 脚本生成有效的 RSA 私钥/公钥对并将每个密钥保存到其自己的文本文件中: | ||||||||
| 要验证的签名。 | |||||||||
| 字符串 |
返回:
一个布尔值,如果true ,则指示签名对于所提供的消息和公钥是否有效。
我们收到一条带有BSON.Binary格式签名的消息,并希望验证该消息是否使用与发件人的 RSA 公钥相对应的私钥进行签名:
-----BEGIN RSA PUBLIC KEY----- MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5 omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE= -----END RSA PUBLIC KEY-----
使用此 RSA 密钥,我们可以使用以下函数验证使用对应私钥进行签名的消息:
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()
根据提供的输入和密钥生成 HMAC 签名。这在与需要签名请求的第三方HTTP服务通信时非常有用。
utils.crypto.hmac( input: string, secret: string, hash_function: string, output_format: string ): string
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 要为其生成签名的输入。 |
| 字符串 | 生成签名时使用的密钥。 |
| 字符串 | 生成签名时使用的哈希函数的名称。 支持以下函数: |
| 字符串 | 生成的签名的格式。 可以是 |
返回:
输入的签名,采用output_format指定的格式。
以下函数生成 sha256 签名作为 base 64 字符串:
exports = function() { const signature = utils.crypto.hmac( "hello!", "super-secret", "sha256", "base64" ) return signature }
"SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="
utils.crypto.hash()
使用指定的哈希函数为提供的输入生成哈希值。
utils.crypto.hash( hash_function: string, input: string | BSON.Binary ): BSON.Binary
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 哈希函数的名称。 支持以下函数: |
| 字符串或 BSON.Binary | 必需。要为其生成哈希值的输入。 |
返回:
一个BSON.Binary对象,用于对由指定哈希函数生成的所提供输入的哈希值进行编码。
以下函数使用 sha256 对输入字符串进行哈希处理:
exports = function() { return utils.crypto.hash( "sha256", "hello!" ) }
"zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="
JSON(JavaScript 对象表示法)
JSON 全局模块提供JSON方法来序列化和反序列化标准JavaScript对象。
方法 | 说明 |
|---|---|
将序列化 JSON 字符串解析为 JavaScript 对象。 | |
将 JavaScript 对象序列化为 JSON 字符串。 |
JSON.parse()
解析提供的 JSON 字符串并将其转换为 JavaScript 对象。
JSON.parse(jsonString: string): object
Parameter | 类型 | 说明 |
|---|---|---|
| 标准 JSON 对象的序列化字符串表示形式。 |
返回:
根据提供的 JSON 字符串生成的标准 JavaScript 对象。
以下函数将序列化的 JSON 字符串转换为等效的 JavaScript 对象:
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()
将提供的 JavaScript 对象序列化为 JSON 字符串。
JSON.stringify(json: object): string
Parameter | 类型 | 说明 |
|---|---|---|
|
返回:
所提供 JavaScript 对象的字符串表示形式。
以下函数将 JavaScript 对象序列化为等效的 JSON 字符串:
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)
EJSON全局模块类似于JSON ,但保留了额外的扩展 JSON类型信息。
EJSON是标准JSON的超集,增加了对BSON中可用但未包含在JSON规范中的类型的额外支持。
方法 | 说明 |
|---|---|
将序列化的扩展 JSON 字符串解析为 JavaScript 对象。 | |
将 JavaScript 对象序列化为 ExtendedJSON 字符串。 |
EJSON.parse()
解析提供的EJSON string并将其转换为JavaScript对象。
EJSON.parse(ejsonString: string): object
Parameter | 类型 | 说明 |
|---|---|---|
ejsonString | 字符串 | 扩展 JSON 对象的序列化字符串表示形式。 |
返回:
所提供 EJSON 字符串的 JavaScript 对象表示形式。
以下函数将序列化的 EJSON 字符串转换为等效的 JavaScript 对象:
exports = function() { const ejsonString = `{ "answer": { "$numberLong": "42" }, "submittedAt": { "$date": { "$numberLong": "1583167607977" } } }`; return EJSON.parse(ejsonString); }
{ "answer": { "$numberLong": "42" }, "submittedAt": { "$date": { "$numberLong": "1583167607977" } } }
EJSON.stringify()
Serializes the provided JavaScript object to an EJSON string.
EJSON.stringify(json: object): string
Parameter | 类型 | 说明 |
|---|---|---|
| 文档 | 一个EJSON对象。 该对象可以包含BSON types 。 |
返回:
所提供 EJSON 对象的字符串表示形式。
以下函数将 JavaScript 对象序列化为等效的 EJSON 字符串:
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)
BSON全局模块允许您创建类型化 BSON 对象并在各种数据格式和编码之间进行转换。
BSON,即二进制JSON,是MongoDB数据库内部使用的数据格式。它使用标准JSON类型的超集对文档数据结构的二进制表示形式进行编码。有关更多信息,请参阅BSON规范。
类型 | 说明 |
|---|---|
表示 ObjectId 值 | |
表示正则表达式 | |
表示二进制数据结构 | |
表示比较值高于所有其他值的值 | |
表示比较值低于所有其他值的值 | |
表示 32 位带符号整数 | |
表示 64 位带符号整数 | |
表示 64 位浮点数 | |
表示 128 位浮点数 |
BSON.ObjectId
BSON.ObjectId类型表示 12 字节的 MongoDB ObjectId标识符。
构造一个对ObjectId进行编码的BSON.ObjectId对象
new BSON.ObjectId(id: string)
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 可选。 12 字节字符串或 24 个十六进制字符的字符串。 |
返回:
A BSON.ObjectId object that encodes the specified ObjectId string or a generated ObjectId string if none was specified.
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
BSON.BSONRegExp 类型表示正则表达式。您可以使用 BSON.BSONRegExp对象和 $regex查询运算符对MongoDB集合执行正则表达式查询。
从正则表达式字符串构造BSON.BSONRegExp对象。 您可以选择指定配置标志。
BSON.BSONRegExp(pattern: string, flags: string)
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | |
| 字符串 | 可选。一个或多个正则表达式标志。 |
返回:
一个BSON.BSONRegExp对象,用于对所提供的正则表达式模式和标志进行编码。
const regex = BSON.BSONRegExp("the great", "ig");
BSON.Binary
BSON.Binary类型表示二进制编码的数据字符串。
BSON.Binary.fromHex()
从表示为十六进制字符串的数据构造BSON.Binary对象。
BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 字节对齐的十六进制字符字符串(0-9 和 AF)。 |
| 整型 | 可选。以十六进制字符串编码的数据类型。 该值必须在 0-255范围内,其中默认值 |
返回:
对所提供的十六进制字符串进行编码的BSON.Binary对象。
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()
将BSON.Binary对象转换为十六进制字符串。
BSON.Binary.prototype.toHex(): string
返回:
所提供BSON.Binary对象的十六进制字符串表示形式。
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString }
"54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase 64 ()
从表示为 base64 字符串的数据构造BSON.Binary对象。
BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 由 base64 编码的字符组成的字符串。 注意: base64 编码的string必须在string末尾包含一个或两个等号 ( |
| 整型 | 可选。以十六进制字符串编码的数据类型。 该值必须在 0-255范围内,其中默认值 |
返回:
对所提供的 base64 字符串进行编码的BSON.Binary对象。
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase 64 ()
将BSON.Binary对象转换为 base64 字符串。
BSON.Binary.prototype.toBase64(): string
返回:
BSON.Binary对象的 base64 字符串表示形式。
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const base64String = binary.toBase64();
BSON.Binary.prototype.text()
将BSON.Binary对象转换为 UTF-8 字符串。
BSON.Binary.prototype.text(): string
返回:
所提供BSON.Binary对象的 UTF-8 字符串表示形式。
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const decodedString = binary.text();
BSON.MaxKey
BSON.MaxKey类型表示比所有其他 BSON 值更高的比较值。
await collection.findOne({ date: { $lt: BSON.MaxKey } });
BSON.MinKey
BSON.MinKey类型表示比所有其他 BSON 值都低的值。
await collection.findOne({ date: { $gt: BSON.MinKey } });
BSON.Int32
BSON.Int32类型表示 32 位带符号整数。
BSON.Int 32 ()
使用 32 位数字构造BSON.Int32对象。
BSON.Int32(low32: number): BSON.Int32
Parameter | 类型 | 说明 |
|---|---|---|
| 数字 | 一个 32 位数字。 |
返回:
对指定整数进行编码的BSON.Int32对象。 如果未提供任何参数,则返回0 。
const int32 = BSON.Int32(42);
BSON.Long
BSON.Long类型表示 64 位带符号整数。
const long = BSON.Long(600206158, 342);
BSON.Long(low 32 , high 32 )
BSON.Long(low32: number, high32: number): BSON.Long
从两个 32 位整数构造BSON.Long对象,这两个 32 位整数分别表示 64 位Long整数中的低 32 位和高 32 位。
Parameter | 类型 | 说明 |
|---|---|---|
| 整型 | 可选。长整数的低 32 位。这些位代表该数字的最低有效位数。 |
| 整型 | 可选。长整数的高 32 位。这些位表示数字的最高有效位数。 |
返回:
对指定整数进行编码的BSON.Long对象。 如果未提供任何参数,则返回0 。
BSON.Long 使用以下公式进行编码:
(high32 * (2**32)) + low32
BSON.Double
BSON.Double类型表示64位( 8字节)点。 它从一个64位十进制值构造一个BSON.Double对象。
重要
使用 Decimal128 表示货币
BSON.Double is subject to floating point rounding errors, so it is not recommended for use cases where decimal values must round exactly, e.g. financial data. For these cases, use BSON.Decimal128 instead.
BSON.Double(double: number): BSON.Double
Parameter | 类型 | 说明 |
|---|---|---|
| 数字 | 64 位十进制值。 |
返回:
一个BSON.Double对象,用于对指定的双精度进行编码。 如果未提供参数,则返回0 。
const double = BSON.Double(1234.5678);
BSON.Decimal128
BSON.Decimal128类型表示 128 位(16 字节)浮点数。 此类型适用于小数值必须精确舍入的使用案例,例如 财务数据。
从十进制数的字符串表示构造BSON.Decimal128 。
BSON.Decimal128(decimalString: string): BSON.Decimal128
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 表示十进制数的字符串,例如 |
返回:
对所提供的十进制值进行编码的BSON.Decimal128 。
const double = BSON.Decimal128.fromString("1234.5678910123456");