すべての関数は、一般的なデータ変換、エンコード、処理作業をサポートする組み込みグローバル モジュールにアクセスできます。 各モジュールに固有のグローバル変数を介して、関数ソースコード内のモジュールにアクセスできます。
Tip
これらのグローバル モジュールは Node.js 組み込みモジュールと同じではありません。 サポートされている Node.js モジュール(インポート方法を含む)の詳細については、「組み込みモジュール サポート 」を参照してください。
Module | 説明 |
|---|---|
JSON Web トークンの読み取りと書き込みのメソッド。 | |
ハッシュや署名などの暗号化アルゴリズムを実装するメソッド。 | |
JSON データの string とオブジェクト表現間で変換するメソッド。 | |
拡張 JSONデータの string 表現とオブジェクト表現の間で変換するメソッド。 | |
バイナリJSONオブジェクトを作成し、さまざまなBSONデータ型とエンコーディング間で変換するメソッド。 |
ユーティリティ
JSON Web Tokens (utils.jwt)
utils.jwt インターフェースを使用してJSON Web トークンを作成および読み取ります。
方式 | 説明 |
|---|---|
指定された | |
JSON web token stringの |
utils.jwt.encode()指定された
signingMethodとsecretに基づいて、payload用にエンコードされたJSON web token stringを生成します。utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string Parameterタイプ説明signingMethodstring
JSON 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 を使用する MGF1
payloadオブジェクト
トークンのクレームと追加の関連データを指定する JSON オブジェクト。
secretstring
App Services がトークンに署名するために使用する秘密の string。 string の値は、使用する署名方法によって異なります。
署名メソッド説明"HS256""HS384""HS512"ランダムなstring 。
"RS256""RS384""RS512"PKCS#8 形式の RSA-SHA 秘密キー。
"PS256""PS384""PS512"PKCS#8 形式の RSA-PSS 秘密キー。
"ES256""ES384""ES512"PKCS#8形式の ECDSA秘密キー。
customHeaderFieldsオブジェクト
JSON web token の JSON ヘッダー。に含める追加フィールドを指定するJSONオブジェクト。
次の値を返します。 提供された 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タイプ説明jwtStringstring
秘密の値で署名されたクレームのセットをエンコードするJSON web token string 。
keystring
App Services がトークンの署名を検証するために使用する string。 string の値は、使用する署名方法によって異なります。
署名メソッド説明"HS256""HS384""HS512"トークンに署名するために使用されたランダムなstring 。
"RS256""RS384""RS512"トークンの署名に使用された秘密キーに対応する RSA-SHA 公開キー。
"PS256""PS384""PS512"トークンの署名に使用された秘密キーに対応する RSA-PSS 公開キー。
"ES256""ES384""ES512"トークンに署名するために使用された秘密キーに対応する ECDSA公開キー。
returnHeaderブール値
acceptedSigningMethodsstring[]
任意。使用された署名方法の配列。例、
["PS256", "HS256"]。この引数は、既知のJSON web トークンのセキュリティの脆弱性 を防ぐために含める必要があります。次の値を返します。 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 を、特定の暗号化方法とキーを使用して復号化します。 | |
秘密キーを使用して、指定されたメッセージに対して暗号化された一意の署名を生成します。 | |
指定されたメッセージと公開鍵に対して署名が有効であることを確認します。 | |
指定された入力とハッシュ関数のハッシュ値を生成します。 |
utils.crypto.encrypt()指定された暗号化方法とキーを使用して、指定されたテキストから暗号化されたテキスト string を生成します。
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary Parameterタイプ説明encryptionTypestring
メッセージを暗号化する暗号化のタイプ。 次の暗号化のタイプがサポートされています。
AES 暗号化(
"aes")
messagestring
暗号化するテキスト string。
keystring
テキストを暗号化するために使用される暗号化キー。 使用する必要があるキーは、暗号化の方法によって異なります。
暗号化タイプ暗号化のキーAES
16 バイト、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タイプ説明encryptionTypestring
提供されたテキストを暗号化するために使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
AES 暗号化(
"aes")
encryptedMessage復号化対象の暗号化されたテキスト string をエンコードする BSON バイナリ。
keystring
テキストを復号化するために使用される暗号化キー。 使用する必要があるキーは、暗号化のタイプによって異なります。
暗号化タイプ暗号化のキーAES
16 バイト、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タイプ説明encryptionTypestring
秘密キーと公開キーのペアの生成に使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
RSA 暗号化(
"rsa")
messagestring
署名するテキスト string。
privateKeystring
指定された暗号化タイプで生成された秘密キー。
重要
キー フォーマット
すべての 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 signatureSchemestring
任意。デフォルト:
"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タイプ説明encryptionTypestring
秘密キーと公開キーのペアの生成に使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
RSA 暗号化(
"rsa")
messagestring
署名を検証するテキスト string。 署名が有効な場合、これは署名された正確なメッセージになります。
publicKeystring
署名を検証する公開鍵。 署名が有効な場合、これはメッセージに署名するために使用された秘密キーの対応する公開キーです。
重要
キー フォーマット
すべての 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検証対象の署名。
signatureSchemestring
任意。デフォルト:
"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タイプ説明inputstring
署名を生成する入力。
secretstring
署名の生成時に使用する秘密キー。
hash_functionstring
署名の生成時に使用するハッシュ関数の名前。 次の関数がサポートされています:
"sha1"、"sha256"、"sha512"。output_formatstring
生成された署名の形式。 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_functionstring
ハッシュ関数の名前。 次の関数がサポートされています:
"sha1"、"sha256"、"md5"。inputstring または BSON.Binary
必須。 ハッシュ値を生成する入力。
次の値を返します。 指定されたハッシュ関数によって生成された入力のハッシュ値をエンコードする BSON.Binaryオブジェクト。例
次の関数は、入力stringを sha256 でハッシュします。
exports = function() { return utils.crypto.hash( "sha256", "hello!" ) } "zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="
JSON(JavaScript オブジェクト表記)
JSON グローバル モジュールは、標準のJavaScriptオブジェクトをシリアル化および逆シリアル化するためのJSONメソッドを提供します。
方式 | 説明 |
|---|---|
シリアル化された 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 は、BSONで使用可能ですがJSON仕様に含まれていない型の追加サポートを追加する標準JSONのスーパーセットです。
方式 | 説明 |
|---|---|
シリアル化された拡張 JSON string を JavaScript オブジェクトに解析します。 | |
JavaScript オブジェクトを拡張 JSON string にシリアル化します。 |
EJSON.parse()指定されたEJSON string を解析し、JavaScript オブジェクトに変換します。
EJSON.parse(ejsonString: string): object Parameterタイプ説明ejsonString
string
拡張 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タイプ説明idstring
任意。 12 バイトの string または 24 個の 16 文字の string。
次の値を返します。 指定されたObjectId string をエンコードするか、指定されていない場合は生成された ObjectIdstring をエンコードする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タイプ説明patternstring
flagsstring
任意。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タイプ説明hexStringstring
16 進数文字のバイト単位の string(0 -9 と AF)。
subTypeinteger
任意。16進数文字列にエンコードされるデータの型。 値は 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タイプ説明base64Stringstring
base64 でエンコードされた文字の string。
注意
stringパディング
base64 でエンコードされた string には、string の末尾に「パディング」と呼ばれる 1 つまたは 2 つの等価記号(
=)が含まれている必要があります。BSON.Binary.fromBase64()は埋め込みなし文字列をサポートしていません。subTypeinteger
任意。16進数文字列にエンコードされるデータの型。 値は 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タイプ説明low32integer
任意。 long 整数の 32 の下位ビット。 これらのビットは、数値の最下位桁を表します。
high32integer
任意。 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タイプ説明decimalStringstring
10進数を表す string。例:
"1234.5678910123456"。次の値を返します。 指定された 10 進数値をエンコードする BSON.Decimal128。例
const double = BSON.Decimal128.fromString("1234.5678910123456");