Global Modules
在此页面上
- JSON Web 令牌 (
utils.jwt
) - utils.jwt.encode()
- utils.jwt.decode()
- 密码学 (
utils.crypto
) - utils.crypto.encrypt()
- utils.crypto.decrypt()
- utils.crypto.sign()
- utils.crypto.verify()
- utils.crypto.hmac()
- utils.crypto.hash()
- JSON(JavaScript 对象表示法)
- JSON.parse()
- JSON.stringify()
- EJSON(扩展 JSON)
- EJSON.parse()
- EJSON.stringify()
- BSON(二进制 JSON)
- BSON.ObjectId
- BSON.BSONRegExp
- BSON.Binary
- BSON.MaxKey
- BSON.MinKey
- BSON.Int32
- BSON.Int 32 ()
- BSON.Long
- BSON.Double
- BSON.Decimal128
所有函数都访问权限支持常见数据转换、编码和处理工作的内置全局模块。 您可以通过每个模块特定的全局变量来访问权限函数源代码中的模块。
提示
这些全局模块与Node.js 内置模块不同。 有关受支持的 Node.js 模块的更多信息,包括如何导入这些模块,请参阅内置模块支持。
模块 | 说明 |
---|---|
读取和写入 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 | 字符串 | 对JSON web token进行编码时使用的加密算法。 Atlas支持以下JSON web token签名方法:
|
payload | 对象 | 一个 JSON 对象,用于指定令牌的声明和任何其他相关数据。 |
secret | 字符串 | 用于对令牌进行签名的密钥string Atlas。该string的值取决于您使用的签名方法:
|
customHeaderFields | 对象 | 一个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 | 类型 | 说明 |
---|---|---|
jwtString | 字符串 | 一个 JSON web token字符串,用于对一组带有密钥值的已签名声明进行编码。 |
key | 字符串 | stringAtlas用于验证令牌签名的 。该string的值取决于您使用的签名方法:
|
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 | 字符串 | 用于加密消息的加密类型。支持以下加密类型:
|
message | 字符串 | 要加密的文本字符串。 |
key | 字符串 | 用于加密文本的加密密钥。您应使用的密钥取决于加密方法:
|
返回:
一个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 | 字符串 | 用于对提供的文本进行加密的加密类型。支持以下加密类型:
|
encryptedMessage | 一个 BSON 二进制文件,用于对要解密的加密文本字符串进行编码。 | |
key | 字符串 | 用于解密文本的加密密钥。您应使用的密钥取决于加密类型:
|
返回:
包含解密消息的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 | 字符串 | 用于生成私钥/公钥对的加密类型。支持以下加密类型:
| ||||||||
message | 字符串 | 要签名的文本字符串。 | ||||||||
privateKey | 字符串 | 使用指定加密类型生成的私钥。 重要提示! 并非所有 RSA 密钥都使用相同的格式。 Atlas只能使用符合标准 PKCS#1 的私钥对消息进行签名 格式。这种格式的私钥具有标头 您可以使用以下 Shell 脚本生成有效的 RSA 私钥/公钥对并将每个密钥保存到其自己的文本文件中:
| ||||||||
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 | 字符串 | 用于生成私钥/公钥对的加密类型。支持以下加密类型:
| ||||||||
message | 字符串 | 要验证签名的文本字符串。如果签名有效,则这就是已签名的确切消息。 | ||||||||
publicKey | 字符串 | 要验证其签名的公钥。如果签名有效,则这是用于对消息进行签名的私钥的相应公钥。 重要提示! 并非所有 RSA 密钥都使用相同的格式。 Atlas只能使用符合标准 PKCS# 的1 RSA 密钥验证签名 格式。这种格式的公钥具有标头 您可以使用以下 Shell 脚本生成有效的 RSA 私钥/公钥对并将每个密钥保存到其自己的文本文件中:
| ||||||||
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
标识符。
构造一个对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.BSONRegExp
对象。 您可以选择指定配置标志。
BSON.BSONRegExp(pattern: string, flags: string)
返回:
一个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 | 类型 | 说明 |
---|---|---|
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.fromBase 64 ()
从表示为 base64 字符串的数据构造BSON.Binary
对象。
BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary
Parameter | 类型 | 说明 |
---|---|---|
base64String | 字符串 | 由 base64 编码的字符组成的字符串。 注意: base64 编码的string必须在string末尾包含一个或两个等号 ( |
subType | 整型 | 可选。 以十六进制string编码的数据类型。 该值必须在0 - 255范围内,其中默认值 0 表示通用二进制。 有关支持的子类型的完整列表,请参阅 BSON 规范。 |
返回:
对所提供的 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 | 类型 | 说明 |
---|---|---|
low32 | 数字 | 一个 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 | 类型 | 说明 |
---|---|---|
low32 | 整型 | 可选。长整数的低 32 位。这些位代表该数字的最低有效位数。 |
high32 | 整型 | 可选。长整数的高 32 位。这些位表示数字的最高有效位数。 |
返回:
对指定整数进行编码的BSON.Long
对象。 如果未提供任何参数,则返回0
。
BSON.Long
使用以下公式进行编码:
(high32 * (2**32)) + low32
BSON.Double
BSON.Double
类型表示64位( 8字节)点。 它从一个64位十进制值构造一个BSON.Double
对象。
重要
使用 Decimal128 表示货币
BSON.Double
会出现浮点舍入误差,因此不建议在小数值必须精确舍入的使用案例中使用,例如 财务数据。 在这些情况下,请改用BSON.Decimal 128 。
BSON.Double(double: number): BSON.Double
Parameter | 类型 | 说明 |
---|---|---|
double | 数字 | 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 | 类型 | 说明 |
---|---|---|
decimalString | 字符串 | 表示十进制数的字符串,例如 "1234.5678910123456" 。 |
返回:
对所提供的十进制值进行编码的BSON.Decimal128
。
const double = BSON.Decimal128.fromString("1234.5678910123456");