Global Modules
項目一覧
すべての関数は、一般的なデータ変換、エンコード、処理作業をサポートする組み込みグローバル モジュールにアクセスできます。 各モジュールに固有のグローバル変数を介して、関数ソースコード内のモジュールにアクセスできます。
Tip
以下も参照してください。
これらのグローバル モジュールは Node.js 組み込みモジュールと同じではありません。 サポートされている Node.js モジュール(インポート方法を含む)の詳細については、「組み込みモジュール サポート 」を参照してください。
Module | 説明 |
---|---|
JSON Web トークンの読み取りと書き込みのメソッド。 | |
ハッシュや署名などの暗号化アルゴリズムを実装するメソッド。 | |
JSON の string とオブジェクト表現を変換するメソッド データ。 | |
拡張 JSONデータの string 表現とオブジェクト表現の間で変換するメソッド。 | |
バイナリ JSON を作成するメソッド オブジェクトと の間でさまざまな BSON データ型とエンコーディングの間で変換が行われます。 |
ユーティリティ
JSON Web Tokens (utils.jwt
)
JSON Web Token の作成と読み取りが可能utils.jwt
インターフェースを持つ。
方式 | 説明 |
---|---|
指定された payload 、signingMethod 、secret に対してエンコードされたJSON web token stringを生成します。 | |
JSON web token stringの payload を復号化します。 |
utils.jwt.encode()
指定された
signingMethod
とsecret
に基づいて、payload
用にエンコードされたJSON web token stringを生成します。utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string Parameterタイプ説明signingMethod
stringJSON web tokenをエンコードするときに使用する暗号化アルゴリズム。 Atlas App Servicesは、次のJSON web token署名メソッドをサポートしています。
署名方法説明"HS256"
SHA-256 を使用する HMAC"HS384"
SHA-384 を使用する HMAC"HS512"
SHA-512 を使用する HMAC"RS256"
SHA-256 を使用する RSASA-PKCS1-v1_5"RS384"
SHA-384 を使用する RSASA-PKCS1-v1_5"RS512"
SHA-512 を使用する RSASA-PKCS1-v1_5"ES256"
P-256 と SHA-256 を使用する ECDSA"ES384"
P-384 と SHA-384 を使用する ECDSA"ES512"
P-512 と SHA-512 を使用する ECDSA"PS256"
SHA-256 を使用する RSASS-PSS と SHA-256 を使用する MGF1"PS384"
SHA-384 を使用する RSASS-PSS と SHA-384 を使用する MGF1"PS512"
SHA-512 を使用する RSASS-PSS と SHA-512 を使用する MGF1payload
オブジェクトトークンのクレームと追加の関連データを指定する JSON オブジェクト。secret
stringApp Services がトークンに署名するために使用する秘密の string。 string の値は、使用する署名方法によって異なります。
署名メソッド説明"HS256"
"HS384"
"HS512"
ランダムなstring 。"RS256"
"RS384"
"RS512"
PKCS#8 形式の RSA-SHA 秘密キー。"PS256"
"PS384"
"PS512"
PKCS#8 形式の RSA-PSS 秘密キー。"ES256"
"ES384"
"ES512"
ECDSA PKCS#8 形式の秘密キー。customHeaderFields
オブジェクトの JSON ヘッダー JSONに含める追加フィールドを指定する オブジェクト。JSON web token次の値を返します。 提供された payload
に対してエンコードされたJSON web token string 。例
次のJSON web tokenクレーム オブジェクトについて考えてみましょう。
{ "sub": "1234567890", "name": "Joe Example", "iat": 1565721223187 } utils.jwt.encode()
を呼び出すと、クレーム オブジェクトをJSON web token stringとしてエンコードできます。 次の関数は、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 token stringの
payload
を復号化します。key
の値は、 JSON web token stringのエンコードに使用されたシークレット値に対応している必要があります。utils.jwt.decode( jwtString: string, key: string, returnHeader: boolean ): object Parameterタイプ説明jwtString
string秘密の値で署名されたクレームのセットをエンコードするJSON web token string 。key
stringApp Services がトークンの署名を検証するために使用する string。 string の値は、使用する署名方法によって異なります。
署名メソッド説明"HS256"
"HS384"
"HS512"
トークンに署名するために使用されたランダムなstring 。"RS256"
"RS384"
"RS512"
トークンの署名に使用された秘密キーに対応する RSA-SHA 公開キー。"PS256"
"PS384"
"PS512"
トークンの署名に使用された秘密キーに対応する RSA-PSS 公開キー。"ES256"
"ES384"
"ES512"
ECDSA トークンに署名するために使用された秘密キーに対応する公開キー。returnHeader
ブール値true
の場合、 のJSON web token JSON ヘッダー を返します デコードされたペイロードに加えて、。acceptedSigningMethods
string[]任意。 使用された署名方法の配列。 たとえば、["PS256", "HS256"]
。 この引数は、 既知のJSON web token のセキュリティ脆弱性 を防ぐために含める必要があります。 。次の値を返します。 returnHeader
がfalse
の場合、 はデコードされた EJSON ペイロードを返します。returnHeader
が の場合、 はtrue
JSE ヘッダー を含むオブジェクトを返します フィールドに と、header
フィールドにデコードされた EJSONpayload
ペイロードが含まれます。{ "header": { "<JOSE Header Field>": <JOSE Header Value>, ... }, "payload": { "<JWT Claim Field>": <JWT Claim Value>, ... } } 例
次の署名されたJSON web token stringについて考えます。
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA" JSON web tokenは、シークレット値
"SuperSecret"
を使用してHS512
署名メソッドを使用して署名されています。 JSON web tokenのクレーム オブジェクトutils.jwt.decode()
をデコードできます。 次の関数は、 JSON web token stringを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
インターフェースの暗号化アルゴリズムを使用して、データを暗号化、復号化、署名、検証できます。
方式 | 説明 |
---|---|
特定の暗号化方法とキーを使用して、指定されたテキスト string から暗号化されたテキスト string を生成します。 | |
指定されたテキスト string を、特定の暗号化方法とキーを使用して復号化します。 | |
秘密キーを使用して、指定されたメッセージに対して暗号化された一意の署名を生成します。 | |
指定されたメッセージと公開鍵に対して署名が有効であることを確認します。 | |
HMAC を生成する 特定の入力とシークレットからの署名。 | |
指定された入力とハッシュ関数のハッシュ値を生成します。 |
utils.crypto.encrypt()
指定された暗号化方法とキーを使用して、指定されたテキストから暗号化されたテキスト string を生成します。
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary Parameterタイプ説明encryptionType
stringメッセージを暗号化する暗号化のタイプ。 次の暗号化のタイプがサポートされています。
AES 暗号化 (
"aes"
)
message
string暗号化するテキスト string。key
stringテキストを暗号化するために使用される暗号化キー。 使用する必要があるキーは、暗号化の方法によって異なります。
暗号化タイプ暗号化のキーAES16 バイト、24 バイト、または 32 バイトのランダムなstring次の値を返します。 指定された暗号化タイプとキーで暗号化されたテキスト string を含むBSON Binaryオブジェクト。 例
次の 32 バイトの AES 暗号化のキーを含む
aesEncryptionKey
という名前の値を定義したとします。"603082712271C525E087BD999A4E0738" この AES キーを使用すると、次の関数を使用してメッセージを base64 string に暗号化できます。
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()
指定された暗号化タイプとキーを使用して、指定されたテキスト string を復号化します。 暗号化のタイプとキーの両方が暗号化に使用されたものと同じ場合は、暗号化されていない元のテキストが返されます。
utils.crypto.decrypt( encryptionType: string, encryptedMessage: BSON.Binary, key: string ): BSON.Binary Parameterタイプ説明encryptionType
string提供されたテキストを暗号化するために使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
AES 暗号化 (
"aes"
)
encryptedMessage
復号化対象の暗号化されたテキスト string をエンコードする BSON バイナリ。key
stringテキストを復号化するために使用される暗号化キー。 使用する必要があるキーは、暗号化のタイプによって異なります。
暗号化タイプ暗号化のキーAES16 バイト、24 バイト、または 32 バイトのランダムなstring次の値を返します。 復号化されたメッセージを含むBSON Binaryオブジェクト。 提供された暗号化されたメッセージが指定されたメソッドとキーで暗号化されている場合、復号化されたメッセージは元のメッセージと同じになります。
例
次の 32 バイトの AES 暗号化のキーを含む
aesEncryptionKey
という名前の値を定義したとします。"603082712271C525E087BD999A4E0738" この AES キーを使用して、次の関数を使用して同じキーで暗号化された base64 string を復号化できます。
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
string秘密キーと公開キーのペアの生成に使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
RSA 暗号化 (
"rsa"
)
message
string署名するテキスト string。privateKey
string指定された暗号化タイプで生成された秘密キー。
重要
キー フォーマット
すべての RSA キーが同じ形式を使用するわけではありません。 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
string任意。デフォルト:
"pss"
パディング スキーム 署名が使用する必要があるドキュメント。App Services は、次のスキームによるメッセージの署名をサポートしています。
次の値を返します。 BSON.Binary 暗号化署名 指定された秘密キーを使用して署名されたメッセージの場合 例
次の RSA 秘密キーを含む
rsaPrivateKey
という名前の値が定義されているとします。-----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
string秘密キーと公開キーのペアの生成に使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
RSA 暗号化 (
"rsa"
)
message
string署名を検証するテキスト string。 署名が有効な場合、これは署名された正確なメッセージになります。publicKey
string署名を検証する公開鍵。 署名が有効な場合、これはメッセージに署名するために使用された秘密キーの対応する公開キーです。
重要
キー フォーマット
すべての RSA キーが同じ形式を使用するわけではありません。 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
string任意。デフォルト:
"pss"
パディング スキーム 署名が使用するApp Services は、次のスキームを使用する署名の検証をサポートしています。
次の値を返します。 ブール値 true
の場合は、提供されたメッセージと公開鍵に対して署名が有効かどうかを示します。例
BSONで署名付きのメッセージを受け取りました 。バイナリ 形式で、送信者の 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
string署名を生成する入力。secret
string署名の生成時に使用する秘密キー。hash_function
string署名の生成時に使用するハッシュ関数の名前。 次の関数がサポートされています:"sha1"
、"sha256"
、"sha512"
。output_format
string生成された署名の形式。 16 進 string の場合は"hex"
、Base64 string の場合は"base64"
のいずれかになります。次の値を返します。 入力の署名。形式は output_format
で指定されます。例
次の関数は、基数 64 string として sha256 署名を生成します。
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
stringハッシュ関数の名前。 次の関数がサポートされています:"sha1"
、"sha256"
、"md5"
。input
string または BSON.Binary必須。 ハッシュ値を生成する入力。次の値を返します。 指定されたハッシュ関数によって生成された入力のハッシュ値をエンコードする BSON.Binary
オブジェクト。例
次の関数は、入力stringを sha256 でハッシュします。
exports = function() { return utils.crypto.hash( "sha256", "hello!" ) } "zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="
JSON(JavaScript オブジェクト表記)
JSON
グローバル モジュールは JSON メソッド を提供します 標準の JavaScript オブジェクトをシリアル化および逆シリアル化します。
方式 | 説明 |
---|---|
シリアル化された JSON string を JavaScript オブジェクトに解析します。 | |
JavaScript オブジェクトを JSON string にシリアル化します。 |
JSON.parse()
指定された JSON string を解析し、JavaScript オブジェクトに変換します。
JSON.parse(jsonString: string): object Parameterタイプ説明jsonString
標準のstringオブジェクトのJSON化された表現。次の値を返します。 指定された JSON string から生成される標準 JavaScript オブジェクト。 例
次の関数は、シリアル化された JSON string を同等の 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 string に直列化します。
JSON.stringify(json: object): string Parameterタイプ説明object
次の値を返します。 提供された JavaScript オブジェクトの string 表現。 例
次の関数は、JavaScript オブジェクトを同等の JSON string に直列化します。
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 string を JavaScript オブジェクトに解析します。 | |
JavaScript オブジェクトを拡張 JSON string にシリアル化します。 |
EJSON.parse()
指定されたEJSON string を解析し、JavaScript オブジェクトに変換します。
EJSON.parse(ejsonString: string): object Parameterタイプ説明ejsonStringstring拡張 JSON オブジェクトの string シリアル化表現。次の値を返します。 指定された EJSON string の JavaScript オブジェクト表現。 例
次の関数は、シリアル化された EJSON string を同等の 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 オブジェクトの string 表現。 例
次の関数は、JavaScript オブジェクトを同等の EJSON string に直列化します。
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 (Binary 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
string任意。 12 バイトの string または 24 個の 16 文字の string。次の値を返します。 指定されたObjectId string をエンコードするか、指定されていない場合は生成された ObjectId
string をエンコードするBSON.ObjectId
オブジェクト。例
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
BSON.BSONRegExp
型は 正規表現を表します 。MongoDB コレクションに対して正規表現クエリを実行するには、 $regex
クエリ演算子とともにBSON.BSONRegExp
オブジェクトを使用できます。
BSON.BSONRegExp()
正規表現stringから
BSON.BSONRegExp
オブジェクトを構築します。 オプションで、構成フラグを指定できます。BSON.BSONRegExp(pattern: string, flags: string) Parameterタイプ説明pattern
string正規表現 パターン。flags
string任意。 1 つ以上の 正規表現フラグ。次の値を返します。 指定された正規表現パターンとフラグをエンコードする BSON.BSONRegExp
オブジェクト。例
const regex = BSON.BSONRegExp("the great", "ig");
BSON.Binary
BSON.Binary
型はバイナリでエンコードされたデータstringを表します。
BSON.Binary.fromHex()
16 進 string として表されたデータから
BSON.Binary
オブジェクトを構築します。BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary Parameterタイプ説明hexString
stringアラインされたバイト 16 進文字の string(0 -9 と AF)。subType
integer任意。 16進数stringにエンコードされるデータの型。 値は0 - 255の範囲内である必要があります。デフォルト値の0
は汎用バイナリを表します。 サポートされているサブタイプの完全なリストについては、 BSON 仕様 を参照してください。次の値を返します。 指定された 16 進 string をエンコードする BSON.Binary
オブジェクト。例
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()
BSON.Binary
オブジェクトを 16 進 string に変換します。BSON.Binary.prototype.toHex(): string 次の値を返します。 提供された BSON.Binary
オブジェクトの16進数文字列表現。例
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString } "54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()
base64 string として表されたデータから
BSON.Binary
オブジェクトを構築します。BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary Parameterタイプ説明base64String
stringbase64 でエンコードされた文字の string。
注意
stringパディング
base64 でエンコードされた string には、string の末尾に「パディング」と呼ばれる 1 つまたは 2 つの等価記号(
=
)が含まれている必要があります。BSON.Binary.fromBase64()
は埋め込みなし文字列をサポートしていません。subType
integer任意。 16進数stringにエンコードされるデータの型。 値は0 - 255の範囲内である必要があります。デフォルト値の0
は汎用バイナリを表します。 サポートされているサブタイプの完全なリストについては、 BSON 仕様 を参照してください。次の値を返します。 指定された base64 string をエンコードする 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 64 ビット
Long
整数の低 32 ビットと高 32 ビットを表す 2 つの 32 ビット整数からBSON.Long
オブジェクトを構築します。Parameterタイプ説明low32
integer任意。 long 整数の 32 の下位ビット。 これらのビットは、数値の最下位桁を表します。high32
integer任意。 long 整数の 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 バイト)の浮動小数点数を表します。 このタイプは、10 進数値が完全に丸められる必要がある使用例を対象としています。例: 金融データ。
BSON.Decimal128.fromString(decimalString)
10 進数の string 表現から
BSON.Decimal128
を構築します。BSON.Decimal128(decimalString: string): BSON.Decimal128 Parameterタイプ説明decimalString
string10進数を表す string。例:"1234.5678910123456"
。次の値を返します。 指定された 10 進数値をエンコードする BSON.Decimal128
。例
const double = BSON.Decimal128.fromString("1234.5678910123456");