Global Modules
在此页面上
所有函数都可以访问支持常见数据转换、编码和处理工作的内置全局模块。 您可以通过每个模块特定的全局变量来访问函数源代码中的模块。
模块 | 说明 |
---|---|
读取和写入 JSON Web 令牌的方法。 | |
实现哈希和签名等加密算法的方法。 | |
在 的string 表示和对象表示之间进行转换的方法JSON 数据。 | |
在string 扩展JSON 数据的 表示和对象表示之间进行转换的方法。 | |
创建 二进制 JSON 的方法 对象并在各种 BSON 数据类型和编码之间进行转换。 |
公用事业
JSON Web Tokens (utils.jwt
)
您可以创建和读取 JSON Web 令牌 与utils.jwt
接口。
方法 | 说明 |
---|---|
为给定的 payload 、 signingMethod 和secret 生成已编码的 JSON web token 字符串。 | |
解码 JSON Web Token 字符串的 payload 。 |
utils.jwt.encode()
根据指定的
signingMethod
和secret
为payload
生成已编码的 JSON web token 字符串。utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string Parameter类型说明signingMethod
字符串对 JWT 进行编码时要使用的加密算法。Atlas App Services 支持以下 JWT 签名方法:
签名方法说明"HS256"
使用 SHA-256 的 HMAC"HS384"
使用 SHA-384 的 HMAC"HS512"
使用 SHA-512 的 HMAC"RS256"
使用 SHA-256 的 RSASSA-PKCS1-v1_5"RS384"
使用 SHA-384 的 RSASSA-PKCS1-v1_5"RS512"
使用 SHA-512 的 RSASSA-PKCS1-v1_5"ES256"
使用 P-256 和 SHA-256 的 ECDSA"ES384"
使用 P-384 和 SHA-384 的 ECDSA"ES512"
使用 P-512 和 SHA-512 的 ECDSA"PS256"
使用 SHA-256 的 RSASSA-PSS 和使用 SHA-256 的 MGF1"PS384"
使用 SHA-384 的 RSASSA-PSS 和使用 SHA-384 的 MGF1"PS512"
使用 SHA-512 的 RSASSA-PSS 和采用 SHA-512 的 MGF1payload
对象一个 JSON 对象,用于指定令牌的声明和任何其他相关数据。secret
字符串App Services 用于对令牌进行签名的密钥字符串。字符串的值取决于您使用的签名方法:
签名方法说明"HS256"
"HS384"
"HS512"
随机字符串。"RS256"
"RS384"
"RS512"
PKCS#8 格式的 RSA-SHA 私钥。"PS256"
"PS384"
"PS512"
PKCS#8 格式的 RSA-PSS 私钥。"ES256"
"ES384"
"ES512"
ECDSA PKCS#8 格式的私钥。customHeaderFields
对象一个JSON 对象,用于指定要包含在 JSON web token 的 JOSE 标头中的其他字段。返回: 针对提供的 payload
进行编码的 JSON Web Token 字符串。例子
考虑以下 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类型说明jwtString
字符串一个 JSON web token字符串,用于对一组带有密钥值的已签名声明进行编码。key
字符串App Services 用于验证令牌签名的字符串。该字符串的值取决于您使用的签名方法:
签名方法说明"HS256"
"HS384"
"HS512"
用于对令牌进行签名的随机字符串。"RS256"
"RS384"
"RS512"
与用于对令牌进行签名的私钥相对应的 RSA-PSS 公钥。"PS256"
"PS384"
"PS512"
与用于对令牌进行签名的私钥相对应的 RSA-PSS 公钥。"ES256"
"ES384"
"ES512"
ECDSA 与用于签署令牌的私钥相对应的公钥。returnHeader
布尔如果true
,则返回 JSON web token 的 JOSE 标头 除了解码的有效负载之外。acceptedSigningMethods
string[]可选。已接受的签名方法的数组。例如:["PS256", "HS256"]
。 应包含此参数以防止已知的 JWT 安全漏洞。返回: 如果 returnHeader
为false
,则返回解码后的 EJSON 有效负载。如果
returnHeader
为true
,则返回包含 JOSE 标头 的对象header
在payload
字段中,解码后的 EJSON 有效负载在 字段中。{ "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类型说明encryptionType
字符串用于加密消息的加密类型。支持以下加密类型:
AES 加密 (
"aes"
)
message
字符串要加密的文本字符串。key
字符串用于加密文本的加密密钥。您应使用的密钥取决于加密方法:
加密类型加密密钥AES16 字节、24 字节或 32 字节随机字符串返回: 一个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类型说明encryptionType
字符串用于对提供的文本进行加密的加密类型。支持以下加密类型:
AES 加密 (
"aes"
)
encryptedMessage
一个 BSON 二进制文件,用于对要解密的加密文本字符串进行编码。key
字符串用于解密文本的加密密钥。您应使用的密钥取决于加密类型:
加密类型加密密钥AES16 字节、24 字节或 32 字节随机字符串返回: 包含解密消息的BSON 二进制对象。 如果提供的加密消息是使用指定的方法和密钥加密的,则解密的消息与原始消息相同。
例子
假设我们定义了一个名为
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类型说明encryptionType
字符串用于生成私钥/公钥对的加密类型。支持以下加密类型:
RSA 加密 (
"rsa"
)
message
字符串要签名的文本字符串。privateKey
字符串使用指定加密类型生成的私钥。
重要
密钥格式
并非所有 RSA 密钥都使用相同的格式。 Atlas App Services只能使用符合标准 PKCS#1 的私钥对消息进行签名 格式。这种格式的私钥具有标头
-----BEGIN RSA PRIVATE KEY-----
。您可以使用以下 Shell 脚本生成有效的 RSA 私钥/公钥对并将每个密钥保存到其自己的文本文件中:
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
字符串返回: 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类型说明encryptionType
字符串用于生成私钥/公钥对的加密类型。支持以下加密类型:
RSA 加密 (
"rsa"
)
message
字符串要验证签名的文本字符串。如果签名有效,则这就是已签名的确切消息。publicKey
字符串要验证其签名的公钥。如果签名有效,则这是用于对消息进行签名的私钥的相应公钥。
重要
密钥格式
并非所有 RSA 密钥都使用相同的格式。 Atlas App Services只能使用符合标准 PKCS# 的1 RSA 密钥验证签名 格式。这种格式的公钥具有标头
-----BEGIN RSA PUBLIC KEY-----
。您可以使用以下 Shell 脚本生成有效的 RSA 私钥/公钥对并将每个密钥保存到其自己的文本文件中:
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
要验证的签名。signatureScheme
字符串返回: 一个布尔值,如果 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类型说明input
字符串要为其生成签名的输入。secret
字符串生成签名时使用的密钥。hash_function
字符串生成签名时使用的哈希函数的名称。 支持以下函数:"sha1"
、"sha256"
、"sha512"
。output_format
字符串生成的签名的格式。 可以是"hex"
(表示十六进制字符串)或"base64"
(表示 Base64 字符串)。返回: 输入的签名,采用 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类型说明hash_function
字符串哈希函数的名称。 支持以下函数:"sha1"
、"sha256"
、"md5"
。input
字符串或 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类型说明jsonString
标准 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类型说明object
返回: 所提供 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()
将提供的JavaScript对象序列EJSON string 。
EJSON.stringify(json: object): string Parameter类型说明object
文档一个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
标识符。
BSON.ObjectId()
构造一个对ObjectId进行编码的
BSON.ObjectId
对象new BSON.ObjectId(id: string) Parameter类型说明id
字符串可选。 12 字节字符串或 24 个十六进制字符的字符串。返回: 一个 BSON.ObjectId
对象,用于对指定的ObjectId string进行编码;如果未指定,则为生成的ObjectId
string进行编码。例子
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
BSON.BSONRegExp
类型表示 正则表达式 。您可以使用BSON.BSONRegExp
对象和$regex
查询运算符对 MongoDB 集合执行正则表达式查询。
BSON.Binary
BSON.Binary
类型表示二进制编码的数据字符串。
BSON.Binary.fromHex()
从表示为十六进制字符串的数据构造
BSON.Binary
对象。BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary Parameter类型说明hexString
字符串一个 字节对齐string 由十六进制字符组成的 (0 -9 和 AF)。subType
整型可选。 以十六进制string编码的数据类型。 该值必须在0 - 255范围内,其中默认值0
表示通用二进制。 有关支持的子类型的完整列表,请参阅 BSON 规范。返回: 对所提供的十六进制字符串进行编码的 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.fromBase64()
从表示为 base64 字符串的数据构造
BSON.Binary
对象。BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary Parameter类型说明base64String
字符串由 base64 编码的字符组成的字符串。
注意
字符串填充
base64 编码的字符串必须在字符串末尾包含一个或两个等号 (
=
),称为“填充”。BSON.Binary.fromBase64()
不支持未填充的字符串。subType
整型可选。 以十六进制string编码的数据类型。 该值必须在0 - 255范围内,其中默认值0
表示通用二进制。 有关支持的子类型的完整列表,请参阅 BSON 规范。返回: 对所提供的 base64 字符串进行编码的 BSON.Binary
对象。例子
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
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.Long
BSON.Long
类型表示 64 位带符号整数。
BSON.Long(low32, high32)
BSON.Long(low32: number, high32: number): BSON.Long 从两个 32 位整数构造
BSON.Long
对象,这两个 32 位整数分别表示 64 位Long
整数中的低 32 位和高 32 位。Parameter类型说明low32
整型可选。长整数的低 32 位。这些位代表该数字的最低有效位数。high32
整型可选。长整数的高 32 位。这些位表示数字的最高有效位数。返回: 对指定整数进行编码的 BSON.Long
对象。 如果未提供任何参数,则返回0
。BSON.Long
使用以下公式进行编码:(high32 * (2**32)) + low32 例子
const long = BSON.Long(600206158, 342);
BSON.Double
BSON.Double
类型表示 64 位(8 字节)浮点数。
重要
使用 Decimal128 表示货币
BSON.Double
会出现浮点舍入误差,因此不建议在小数值必须精确舍入的使用案例中使用,例如 财务数据。 在这些情况下,请改用BSON.Decimal 128 。
BSON.Decimal128
BSON.Decimal128
类型表示 128 位(16 字节)浮点数。 此类型适用于小数值必须精确舍入的使用案例,例如 财务数据。